如何在sparksql中传递columnlist函数的变量

wko9yo5t  于 2021-07-13  发布在  Spark
关注(0)|答案(1)|浏览(353)

我在spark应用程序中创建了一个jsontype输出列—我需要将动态列列表作为参数传递给json函数—我可以使用函数的静态列表来实现这一点,但不能作为应用程序的参数。请参考工作代码
工作代码

val df2 = df.withColumn("newcol",lit(to_json(struct("c1","c2","c3"))))

非工作代码

val columnList = "c1,c2,c3"
val df2 = df.withColumn("newcol",lit(to_json(struct(columnList))))  // using variable to pass the columns

你能帮我解决这个问题吗?
提前谢谢。

pokxtpni

pokxtpni1#

您可以尝试:

val columnList = Seq("c1", "c2", "c3")
val df2 = df.withColumn("newcol", to_json(struct(columnList.map(col): _*)))
``` `lit` 在代码中不需要,因为您没有构造任何文本列。
或者你可以:

val columnList = "c1,c2,c3"
val df2 = df.withColumn("newcol", to_json(struct(columnList.split(",").map(col): _*)))

相关问题