为了账号安全,请及时绑定邮箱和手机立即绑定

Spark Sql 中 posexplode() 的替代方法是什么,因为它不动态地采用可变数量的参

Spark Sql 中 posexplode() 的替代方法是什么,因为它不动态地采用可变数量的参

holdtom 2023-03-09 10:42:18
val result = df.select($"seq_id", posexplode(array($"prod_id", $"prod_name")))在上面的示例中,posexplode 没有在 side array() 中采用任何列名序列。必须对列名进行硬编码。有没有办法删除硬编码并动态添加任意数量的列?
查看完整描述

1 回答

?
收到一只叮咚

TA贡献1821条经验 获得超5个赞

从函数声明 array(cols: Column*): Column中可以看出,我们可以传递一个或多个 col 作为数组函数的参数。这也可以通过从任意字符串列表生成列数组来动态完成:


import org.apache.spark.sql.functions.{posexplode, col, array}


val cols = Seq("prod_id", "prod_name").map{col(_)}

val customArray = array(cols:_*)


df.select(customArray).show

这将包含在一个数组中,并像您之前那样prod_id, prod_name使用函数。array


查看完整回答
反对 回复 2023-03-09
  • 1 回答
  • 0 关注
  • 133 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号