gpt4 book ai didi

apache-spark - Apache Spark RDD过滤器分为两个RDD

转载 作者:行者123 更新时间:2023-12-03 13:25:42 26 4
gpt4 key购买 nike

我需要将RDD分为2部分:

1个满足条件的部分;另一部分则没有。我可以在原始RDD上执行filter两次,但这似乎效率很低。有什么方法可以做我所追求的吗?我在API或文献中都找不到任何东西。

最佳答案

默认情况下,Spark不支持此功能。如果事先缓存相同的数据两次,过滤效果还不错,而且过滤本身很快。

如果确实只有两种不同的类型,则可以使用辅助方法:

implicit class RDDOps[T](rdd: RDD[T]) {
def partitionBy(f: T => Boolean): (RDD[T], RDD[T]) = {
val passes = rdd.filter(f)
val fails = rdd.filter(e => !f(e)) // Spark doesn't have filterNot
(passes, fails)
}
}

val (matches, matchesNot) = sc.parallelize(1 to 100).cache().partitionBy(_ % 2 == 0)


但是,一旦您拥有多种类型的数据,只需将过滤后的值分配给新值。

关于apache-spark - Apache Spark RDD过滤器分为两个RDD,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29547185/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com