Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache spark 如何根据两个条件筛选()pairRDD_Apache Spark_Keyvaluepair - Fatal编程技术网

Apache spark 如何根据两个条件筛选()pairRDD

Apache spark 如何根据两个条件筛选()pairRDD,apache-spark,keyvaluepair,Apache Spark,Keyvaluepair,如果我有两个过滤条件,一个用来测试密钥,另一个用来测试值(代码的一部分),那么我如何过滤我的RDD对呢 JavaPairRDD filtering = pairRDD1.filter((x,y) -> (x._1.equals(y._1))&&(x._2.equals(y._2))))); 您不能对此使用常规筛选器,因为它一次检查一个项目。您必须将多个项目相互比较,并检查要保留的项目。下面是一个仅保留重复项目的示例: val items = List(1, 2, 5, 6

如果我有两个过滤条件,一个用来测试密钥,另一个用来测试值(代码的一部分),那么我如何过滤我的RDD对呢

JavaPairRDD filtering = pairRDD1.filter((x,y) -> (x._1.equals(y._1))&&(x._2.equals(y._2)))));

您不能对此使用常规筛选器,因为它一次检查一个项目。您必须将多个项目相互比较,并检查要保留的项目。下面是一个仅保留重复项目的示例:

val items = List(1, 2, 5, 6, 6, 7, 8, 10, 12, 13, 15, 16, 16, 19, 20)
val rdd = sc.parallelize(items)
// now create an RDD with all possible combinations of pairs
val mapped = rdd.map { case (x) => (x, 1)}
val reduced = mapped.reduceByKey{ case (x, y) => x + y }
val filtered = reduced.filter { case (item, count) => count > 1 }
// Now print out the results:
filtered.collect().foreach { case (item, count) =>
   println(s"Keeping $item because it occurred $count times.")}

它可能不是这方面性能最好的代码,但它应该能让您对该方法有一个想法。

什么不起作用?你在对付什么类型的人?我们需要更多关于您试图帮助做什么的详细信息。我有一个pairRDD,它可能包含同一个键的不同值,或者同一个元组是重复的,我只想保留重复的元组例如。如果我的rdd包含{(1,白色),(1,黑色),(2,红色),(2,红色)},那么我只想保留{(2,红色),(2,红色)}你的
RDD
是一个元组序列吗?它应该只包含这样的元组(每个键都是重复的),有时具有相同的值,有时没有,但我猜不出会出现什么项目