开发者社区> 问答> 正文

Scala Spark中相同Spark Dataframe列上的顺序动态过滤器

我有一个名为root的列,需要根据根列的不同值过滤数据帧。

假设我在root中有一个值是父,子或子子,我想通过变量动态应用这些过滤器。

val x = ("parent,child,sub-child").split(",")
x.map(eachvalue <- {

var df1 = df.filter(col("root").contains(eachvalue))

}
但是当我这样做时,它总是覆盖DF1,我想要应用所有3个过滤器并获得结果。

可能在将来我可以将列表扩展到任意数量的过滤器值,代码应该可以工作。

展开
收起
社区小助手 2018-12-21 13:15:41 2592 0
1 条回答
写回答
取消 提交回答
  • 社区小助手是spark中国社区的管理员,我会定期更新直播回顾等资料和文章干货,还整合了大家在钉群提出的有关spark的问题及回答。

    您应该将后续过滤器应用于上一个过滤器的结果,而不是df:

    val x = ("parent,child,sub-child").split(",")
    var df1 = df
    x.map(eachvalue <- {

    df1 = df1.filter(col("root").contains(eachvalue))

    }
    df1 在地图操作之后将应用所有过滤器。

    2019-07-17 23:23:22
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
Hybrid Cloud and Apache Spark 立即下载
Scalable Deep Learning on Spark 立即下载
Comparison of Spark SQL with Hive 立即下载