如何从Scala中给定的数据集中分离给定的列列表?

时间:2018-03-13 16:37:01

标签: scala apache-spark apache-spark-sql

我有200列的数据集,我想将Intent intent = new Intent(); intent.setComponent(new ComponentName("package.name", "activity.name")); startActivity(intent); 与给定的数据集分开。

我想实现以下功能

List("firstName","lastName","salary")

ex-Given Dataset

def transform(input:Dataset[Row],columns:List[String]):Dataset[Row]={//Return Dataset with given list of columns.}

我想要数据集

EmpNo | firstName | lastName | age | address | sarary | bonus | phone
---------------------------------------------------------------------- 
1     |  Alice    |  tark    | 21  |  India  | 200000 | 52000 | 1234567890

注意:数据集和列表列中的列数可能会有所不同。

1 个答案:

答案 0 :(得分:0)

我们可以通过使用Dataset.col()映射字符串数组的列名来实现。

def transform(input:Dataset[Row],columns:List[String]:Dataset[Row]={ 

  val cols=columns.map(cl=>input.col(cl))   

  return input.select(cols:_*)                                               
  }