[英]Spark Scala: How to pass column name in UDF with DataFrame.Select
[英]Scala Spark DataFrame : dataFrame.select multiple columns given a Sequence of column names
val columnName=Seq("col1","col2",....."coln");
有没有办法做 dataframe.select 操作来获取只包含指定列名的数据帧。 我知道我可以做dataframe.select("col1","col2"...)
但columnName
是在运行时生成的。 我可以为循环中的每个列名重复执行dataframe.select()
。它会有任何性能开销吗?。 有没有其他更简单的方法来实现这一点?
val columnNames = Seq("col1","col2",....."coln")
// using the string column names:
val result = dataframe.select(columnNames.head, columnNames.tail: _*)
// or, equivalently, using Column objects:
val result = dataframe.select(columnNames.map(c => col(c)): _*)
由于dataFrame.select()
预计列的顺序,我们有串序列,我们需要把我们的序列转换成List
的col
s以及列表转换序列。 columnName.map(name => col(name)): _*
给出一系列字符串的列序列,这可以作为参数传递给select()
:
val columnName = Seq("col1", "col2")
val DFFiltered = DF.select(columnName.map(name => col(name)): _*)
或者,你也可以这样写
val columnName = Seq("col1", "col2")
val DFFiltered = DF.select(columnName.map(DF(_): _*)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.