apache-spark - spark在不使用var的情况下覆盖数据框变量
问题描述
我有一个 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
to fold left on theDataFrame
并放下您的列:
clmList.foldLeft(df)((acc, c) => acc.drop(c))
我希望这有帮助。
推荐阅读
- android - 如何将 androidx.recyclerview 与 Facebook Audience Network SDK 一起使用?
- javascript - 如何在 2 个数组不匹配的索引上输入空值?
- ruby-on-rails - 创建记录时未执行自定义验证?
- cors - Firebase 存储的跨域读取阻塞 (CORB) 错误
- javascript - 根据需要将对象转换为合并对象
- deployment - 如何在不重新平衡延迟的情况下扩大实时 kafka 消费者?
- polymer - lit-html 事件侦听器未正确呈现
- reactjs - 使用 styled-components 覆盖 react-slick 样式
- json - 获取推特热门话题标签的网址是什么?
- java - 如何将 Spring 的 @ManagedOperation 与 Enum 参数一起使用?