如何按键比较两个javapairdd并比较值?
我想使用JavaSpark比较两个基于键的JavaPairRDD,比较它们的值,看看同一个键是否有完全相同的值 现在,我只检查交集和并集的count(),但这还不够,如下所示:如何按键比较两个javapairdd并比较值?,java,apache-spark,rdd,Java,Apache Spark,Rdd,我想使用JavaSpark比较两个基于键的JavaPairRDD,比较它们的值,看看同一个键是否有完全相同的值 现在,我只检查交集和并集的count(),但这还不够,如下所示: JavaPairRDD<String, String> intersectionJavaPairRDD = hBaseJavaPairRDD.intersection(hiveJavaPairRDD); JavaPairRDD<String, String> uni
JavaPairRDD<String, String> intersectionJavaPairRDD = hBaseJavaPairRDD.intersection(hiveJavaPairRDD);
JavaPairRDD<String, String> unionJavaPairRDD = hBaseJavaPairRDD.union(hiveJavaPairRDD).distinct();
if (intersectionJavaPairRDD.count() != unionJavaPairRDD.count()
|| hiveJavaPairRDD.count() != hBaseJavaPairRDD.count()) {
System.err.println(
"ERROR: SxS validation failed...");
System.exit(-1);
}
javapairdd intersectionjavapairdd=hbasejavapairdd.intersection(hivejavapairdd);
javapairdd unionjavapairdd=hbasejavapairdd.union(hivejavapairdd.distinct();
if(intersectionJavaPairdd.count()!=UnionJavaPairdd.count()
||hivejavapairdd.count()!=hbasejavapairdd.count()){
System.err.println(
“错误:SxS验证失败…”);
系统退出(-1);
}
当每个值具有相同的键时,如何比较它们
非常感谢 我来自scala,但我相信只要稍作语法更改,它也可以用于java 我的想法是连接两个
RDD
s,然后比较两列值
val isEquals = hBaseJavaPairRDD
.join(hiveJavaPairRDD)
.map {
case (id, (v1, v2)) => v1 == v2
}
.reduce(_ && _)
此解决方案背后的理念如下:
RDD的值放在同一行中。这是通过join
操作执行的
RDD
),以便对于每一行,如果两个值等于false
,则我们将true
RDD
上应用reduce
函数,并将和作为元素之间的二进制操作reduce
关联的RDD中的所有元素都是true
,则应用reduce
函数返回true
,否则返回false
很抱歉在scala中回答,希望它对您有所帮助您可以使用combineByKey/AggregateByKey来比较值。