繁体   English   中英

Scala Spark DataFrame: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()预计列的顺序,我们有串序列,我们需要把我们的序列转换成Listcol 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM