【发布时间】:2020-01-15 05:43:57
【问题描述】:
我写了一个算法来做一些事情并打印输出。我的算法的输入是一个包含一些整数的列表。 这是作为列表的示例输入。
`mylist = [5,6,14,15,16,17,18,19,20,28,40,41,42,43,44,55]`
这是我的算法
```
tduration = 0
duration = 0
avg = 0
bottleneck = 0
y = 0
x = 0
while x<len(mylist)-4 and y<len(mylist)-1 :
if mylist[x+4] == mylist[x]+4:
y = x + 4
print("MY LIST X = ",mylist[x])
print("X = ", x)
print ("Y = ", y)
while True:
if y==len(mylist)-1 or mylist[y+1] > mylist[y]+10:
bottleneck = bottleneck + 1
duration = mylist[y] - mylist[x] + 1
tduration = tduration + duration
avg = tduration/bottleneck
x = y + 1
print("MY LIST Y = " , mylist[y])
print("Duration = " , duration)
break
else:
y = y + 1
else:
x = x + 1
print("BottleneckCount = ", bottleneck, "\nAverageDuration = ", avg)
```
现在我想将此“算法”转换为 PySpark 中的用户定义函数 (UDF),然后将此 UDF 应用于具有一列的 DataFrame。此 DataFrame 的每一行中都有一个列表。示例 DataFrame 有 1 列和 2 行。 row1 是[10,11,19,20,21,22,23,24,25,33,45] 的列表,row2 是[55,56,57,58,59,60,80,81,82,83,84,85,92,115] 的列表,因此UDF 应分别应用于DataFrame 的每一行,并为另一列中的每一行提供结果。
提前感谢您的时间和帮助。我会支持你的答案
【问题讨论】:
-
你希望你的函数返回什么?
-
我希望它返回在算法的最后一行打印的 2 个数字(“bottleneck”和“avg”)。 print("BottleneckCount = ",bottleneck, "\nAverageDuration = ", avg) 非常感谢您的帮助和支持。我真的需要答案。这是我为期 6 个月的项目的最后一部分。
标签: algorithm list pyspark user-defined-functions