如何解决转换函数用法Lambda问题
我正在尝试在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,6] (6 since 3+2+1)
错误:
AnalysisException:lambda函数参数'3'的数量与高阶函数'1'期望的参数数量不匹配。第1行pos 33
解决方法
Spark SQL转换函数需要具有1或2个参数的lambda函数作为第二个参数,请参见https://spark.apache.org/docs/latest/api/sql/index.html#transform。您的lambda函数具有3个参数(x,y,z)。那就是错误的意思。
另一方面,我想您不会出于构建它的目的而使用转换功能。转换对数组的每个条目执行转换,例如“ x-> x + 1”。它不能取消将数组应用于其元素并产生总和。要创建总和,请使用汇总,例如aggregate(array(1,2,3),(acc,x) -> acc + x)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。