2024-10-01 02:40:02 发布
网友
org.apache.spark.functions.transform将函数应用于数组的每个元素(spark 3.0中新增) 然而,pysparkdocs没有提到一个等价的函数
(有pyspark.sql.DataFrame.transform,但它用于转换数据帧,而不是数组元素)
编辑:
要避免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是要应用的函数
x+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]| + -+
编辑:
要避免UDF,可以使用F.expr('transform…'):
旧答案:
IIUC,我认为等价物是UDF
x+1
是要应用的函数相关问题 更多 >
编程相关推荐