Python 3.x 转换函数使用(Lambda问题)

Python 3.x 转换函数使用(Lambda问题),python-3.x,apache-spark,pyspark,apache-spark-sql,pyspark-dataframes,Python 3.x,Apache Spark,Pyspark,Apache Spark Sql,Pyspark Dataframes,我试图在Spark SQl中使用转换函数 df2 = spark.sql("select transform(array(1, 2 ,3), (x,y,z) ->x+y+z ) from A group by company_id").show(truncate=False) 预期产出: [1,2,6] (6 since 3+2+1) 错误: AnalysisException:lambda函数参数“3”的数量与高阶函数“1”所需的参数数量不匹配。;第1行位置

我试图在Spark SQl中使用转换函数

df2 = spark.sql("select transform(array(1, 2 ,3), (x,y,z) ->x+y+z ) from  A group by company_id").show(truncate=False) 
预期产出:

[1,2,6]  (6 since 3+2+1)
错误:


AnalysisException:lambda函数参数“3”的数量与高阶函数“1”所需的参数数量不匹配。;第1行位置33

Spark SQL转换函数需要一个具有1个或2个参数的lambda函数作为第二个参数,请参阅。lambda函数有3个参数(x、y、z)。错误就是这么说的

另一方面,我猜你没有使用转换函数来实现它的目的。Transform对数组的每个条目执行转换,例如“x->x+1”。它不能将数组取消应用到其元素中并生成和。要创建总和,请使用聚合,例如
aggregate(数组(1,2,3),0,(acc,x)->acc+x)