Spark 1.6.1 PairedRDD leftOuterJoin导致不一致

时间:2018-07-27 12:54:30

标签: scala apache-spark join left-join rdd

我在scala 2.10.8的spark 1.6.1中被RDD的leftOuterJoin困扰。 用类型为String的键执行leftOuterJoin。

RDD1: RDD[(String, scala.Iterable[(String, String)])] = [(k1,v1), (k2,v2), (k3,v3), (k4,v4), (k6,v6)]
RDD2: RDD[(String, Assembly)] = [(k1,data1),(k2,data2),(k3,data3),(k5,data5),(k4,data4),(k6,data6)]

** Class Assembly:由在avsc文件中定义的avro模式创建,具有一些CharSequence类型的字段。通过读取avro文件和k1来创建RDD to是Assembly中的字段之一。

rdd2.leftOuterJoin(rdd1)

(k1,data1,Some((k1,v1)))
(k2,data2,Some((k2,v2)))
(k3,data3,Some((k3,v3)))
(k4,data4,Some((k4,v4)))
**(k5,data2,None)**
(k6,data6,Some((k6,v6)))

稍作调整后,belwo方案将按预期工作:

RDD1: RDD[(String, scala.Iterable[(String, String)])] = [(k1,v1), (k2,v2), (k3,v3), (k4,v4), (k6,v6)]

RDD2: RDD[(String, String)] = [(k1,LineageKey1),(k2,LineageKey2),(k3,LineageKey3),(k5,LineageKey5),(k4,LineageKey4),(k6,LineageKey6)]

rdd2.leftOuterJoin(rdd1)

(k1,LineageKey1,Some((k1,v1)))
(k2,LineageKey2,Some((k2,v2)))
(k3,LineageKey3,Some((k3,v3)))
(k4,LineageKey4,Some((k4,v4)))
**(k5,LineageKey5,None)**
(k6,LineageKey6,Some((k6,v6)))

任何参考或解决方案建议都是非常需要和赞赏的。 预先感谢...

0 个答案:

没有答案