Я написал алгоритм, который что-то делает и печатает вывод. Вход для моего алгоритма представляет собой список с некоторыми целыми числами. Вот пример ввода в виде списка.
`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)
```
Теперь я хочу преобразовать этот «алгоритм» в пользователя Определенная функция (UDF) в PySpark, а затем применить эту 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 отдельно и предоставлять результаты для каждой строки в другом столбце. Заранее спасибо за ваше время и помощь. Я буду голосовать ваши ответы