Определение некоторых примеров входных данных:
df = spark.createDataFrame([
(1, [3, 4, 8]), (2, [7, 2, 6, 8])
], ("id", "list_of_ints"))
df.show()
Определение udf
:
from pyspark.sql.functions import udf, col
def product(numbers):
a = 1
for num in numbers:
a *= num
return a
from pyspark.sql.types import IntegerType
product_udf = udf(lambda z: product(z), IntegerType())
И добавление столбца с произведением всех элементов списка:
df.withColumn("product", product_udf("list_of_ints")).show()
+---+------------+-------+
| id|list_of_ints|product|
+---+------------+-------+
| 1| [3, 4, 8]| 96|
| 2|[7, 2, 6, 8]| 672|
+---+------------+-------+
Надеюсь, это поможет!