[英]Apache Spark - how to get unmatched rows from two RDDs
我有两个不同的RDD,每个RDD都有一些共同的字段,基于这些字段,我想从RDD1或RDD2获取不匹配的记录。[记录在RDD1中可用,但在RDD2中不可用] [在RDD2中可用但在RDD1中不可用的记录]
看来我们可以使用subtract
或subtractbyKey
。
输入样例:
**File 1:**
sam,23,cricket
alex,34,football
ann,21,football
**File 2:**
ruby,25,football,usa
alex,34,cricket,usa
ann,21,cricket,usa
**expected output:**
sam,23,cricket
更新:
目前,我正在使用Spark SQL从RDD获取不匹配的记录(编写查询以获取不匹配的记录)。
我正在寻找的是,是否可以使用Spark Core本身而不是使用Spark SQL来完成它,而且我也没有查找代码,Spark Core中是否有可用的操作?
请对此提供建议。
问候,香卡。
您可以将两个RDD设置为相同的形状,并使用subtract
删除公共元素。
鉴于rdd1
从file1
和rdd2
从file2
如上所,你可以这样做:
val userScore2 = rdd2.map{case (name, score, sport, country) => (name, score, sport)}
val in1andNotin2 = rdd1 subtract userScore2
val in2andNotIn1 = userScore2 subtract rdd1
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.