在dataframe的select expr中使用生成的字符串

K S*_*hin 1 scala apache-spark

我对scala编程很新,所以这可能是一个基本问题

我打算动态创建一个数据帧.

这是我的最终目标:

val df2 = df1.select("col1","col2","col3")
Run Code Online (Sandbox Code Playgroud)

我有一个函数生成如下所示的列名称并保存到这样的变量:

scala> val colVar = generateColSelectionString(4)
colVar: String = col1,col2,col3
Run Code Online (Sandbox Code Playgroud)

现在,

我该怎么做这样的事情:

val df2 = df1.select(colVar)
Run Code Online (Sandbox Code Playgroud)

Psi*_*dom 5

您可以拆分字符串并使用selectExpr:

val df = Seq((1,2,3)).toDF("col1","col2","col3")

val colVar = "col1,col2,col3"

df.selectExpr(colVar.split(","):_*).show
+----+----+----+
|col1|col2|col3|
+----+----+----+
|   1|   2|   3|
+----+----+----+
Run Code Online (Sandbox Code Playgroud)