pyspark是否有org.apache.spark.functions.transform的等价物?

2024-10-01 02:40:02 发布

您现在位置:Python中文网/ 问答频道 /正文

org.apache.spark.functions.transform将函数应用于数组的每个元素(spark 3.0中新增) 然而,pysparkdocs没有提到一个等价的函数

(有pyspark.sql.DataFrame.transform,但它用于转换数据帧,而不是数组元素)


Tags: 数据函数org元素dataframesqlapachetransform
1条回答
网友
1楼 · 发布于 2024-10-01 02:40:02

编辑:

要避免UDF,可以使用F.expr('transform…'):

import pyspark.sql.functions as F
from pyspark.sql.types import IntegerType

df = spark.createDataFrame([[[1,2]],[[3,4]]]).toDF('col')
df.show()
+   +
|   col|
+   +
|[1, 2]|
|[3, 4]|
+   +

df.select(F.expr('transform(col, x -> x+1)').alias('transform')).show()
+    -+
|transform|
+    -+
|   [2, 3]|
|   [4, 5]|
+    -+

旧答案:

IIUC,我认为等价物是UDFx+1是要应用的函数

import pyspark.sql.functions as F
from pyspark.sql.types import IntegerType

add = F.udf(lambda arr: [x+1 for x in arr], ArrayType(IntegerType()))
df.select(add('col')).show()
+      -+
|<lambda>(col)|
+      -+
|       [2, 3]|
|       [4, 5]|
+      -+

相关问题 更多 >