从数据框动态获取列,列名称将变为变量

时间:2018-05-18 20:20:09

标签: apache-spark apache-spark-sql

我无法获取给定动态列的值。有什么帮助吗?

var dynamicColumns = "col(\"one\"),col(\"two\"),col(\"three\")"

dataFrame.select(dynamicColumns)

1 个答案:

答案 0 :(得分:1)

只使用名称:

val dynamicColumns = Seq("one", "two", "three")
dataFrame.select(dynamicColumns map col: _*)

如果您无法控制格式,请先使用regexp提取名称

val dynamicColumns = "col(\"one\"),col(\"two\"),col(\"three\")"
val p = """(?<=col\(").+?(?="\))""".r

dataFrame.select(p.findAllIn(dynamicColumns) map col toSeq: _*)