【发布时间】:2019-03-14 03:34:01
【问题描述】:
我正在尝试在 Scala 中定义将字符串列表作为输入的函数,并将它们转换为传递给下面代码中使用的数据帧数组参数的列。
val df = sc.parallelize(Array((1,1),(2,2),(3,3))).toDF("foo","bar")
val df2 = df
.withColumn("columnArray",array(df("foo").cast("String"),df("bar").cast("String")))
.withColumn("litArray",array(lit("foo"),lit("bar")))
更具体地说,我想创建函数 colFunction 和 litFunction(或者如果可能的话,只创建一个函数),它们将字符串列表作为输入参数,可以按如下方式使用:
val df = sc.parallelize(Array((1,1),(2,2),(3,3))).toDF("foo","bar")
val colString = List("foo","bar")
val df2 = df
.withColumn("columnArray",array(colFunction(colString))
.withColumn("litArray",array(litFunction(colString)))
我尝试将colString 映射到具有所有转换的列数组,但这不起作用。关于如何实现这一点的任何想法?非常感谢您阅读该问题以及任何建议/解决方案。
【问题讨论】:
标签: arrays scala apache-spark apache-spark-sql