我刚刚介绍了sparksql中数组的高阶函数。但是,我没有在网上找到关于它们的用法、语法和动态的足够的文档/解释。我特别想了解如何使用lambda函数和传递参数来操作具有高阶函数的数组:
首先,我关注了在web上发现的两个高阶函数sql查询:我试图了解它们的用法以及如何操作数组的语法:
查询1:
select id, my_arr, transform(my_arr, (val, i) -> val + i) AS new arr
from table_name;
在上面的sql中,myu arr是一个数组类型的列,它返回一个数组,该数组包含添加到相应数组索引中的所有输入元素。
问题:
对于表达式 (val, i)
,spark如何理解将索引传递到 i
?
如果我传递第三个参数作为 (val, i, n)
?
spark总是将数组索引作为第二个参数传递吗?我怎样才能让它传递更多的论点?
我在哪里可以找到更详细的例子和描述?
问题2:
select key, val,
aggregate(c02_levels,
(1.0 as product, 0 as N),
(buffer, c02) -> (c02 * buffer.product, buffer.N + 1),
buffer -> round(Power(buffer.prodyuct, 1.0 / buffer.N))) as geomean
from my_table
在上面的sql中, c02_levels
是数组类型。
问题-
Spark在争论中传递了什么 buffer
以及 c02
?
有人能一步一步地解释一下上述问题吗?它将帮助我理解如何使用高阶函数。
有人能帮我理解上面的内容吗?请给我指出正确的方向,在那里我可以找到关于sparksql?中高级高阶函数的更详细的例子和解释?。
谢谢
暂无答案!
目前还没有任何答案,快来回答吧!