我有一个API,它对数据帧执行删除操作,如下面的
def deleteColmns(df:DataFrame,clmList :List[org.apache.spark.sql.Column]):DataFrame{
var ddf:DataFrame = null
for(clm<-clmList){
ddf.drop(clm)
}
return ddf
}
由于在函数编程中使用var不是一种好的做法,如何避免这种情况
使用Spark>2.0,可以使用列名序列删除多个列:
val clmList: Seq[Column] = _
val strList: Seq[String] = clmList.map(c => s"$c")
df.drop(strList: _*)
否则,您可以始终使用foldLeft
在DataFrame
上向左折叠并放下列:
clmList.foldLeft(df)((acc, c) => acc.drop(c))
我希望这能有所帮助。