java如何按键比较两个JavaPairRDD并比较值?
我想使用Java Spark来比较两个基于键的JavaPairRDD,比较它们的值,看看同一个键是否有完全相同的值
现在,我只检查交集和并集的count(),但这还不够,如下所示:
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);
}
当它们具有相同的键时,如何比较每个值
非常感谢
# 1 楼答案
我来自scala,但我相信只要稍作语法更改,它也适用于java
我的想法是连接两个
RDD
,然后比较两列值该解决方案的理念如下:
RDD
的值放在同一行中。这是通过join
操作执行的李>RDD
),这样对于每一行,如果两个值相等,我们就放置true
,否则reduce
函数映射RDD
,并将和作为元素之间的二进制操作李>应用
reduce
函数返回true
,如果连接的RDD
中的所有元素都是true
,即所有值都等于,否则false
很抱歉用scala回复,希望能有所帮助