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

val result = df.select($"seq_id", posexplode(array($"prod_id", $"prod_name")))

在上面的示例中,posexplode 没有在 side array() 中采用任何列名序列。必须对列名进行硬编码。有没有办法删除硬编码并动态添加任意数量的列?



holdtom
浏览 134回答 1
1回答

收到一只叮咚

从函数声明 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
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java