pyspark有相当于org.apache.spark.functions.transform的功能吗



org.apache.spark.functions.transform将一个函数应用于数组的每个元素(spark 3.0中新增(然而,pyspark文档没有提到等效的功能

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

编辑:

为了避免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,我认为相当于UDF。CCD_ 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]|
+-------------+

最新更新