2016-03-25 6 views
0

スパークでジョインを実行しようとしていますが、左側のキーの1つに他のRDDの対応する値がないことを知っています。なしのスパークジョイント

ドキュメントでは、キーが見つからない場合はNoneを使用して結合を実行する必要があると書かれていますが、タイプの不一致エラーが続いています。

ここでの洞察はありますか?

+2

問題のあるコードを簡単に扱うことができます。レム。 –

答えて

0

これら2 RDDSを取る:

val rdd1 = sc.parallelize(Array(("test","foo"),("test2", "foo2"))) 
val rdd2 = sc.parallelize(Array(("test","foo3"),("test3", "foo4"))) 

あなたがそれらに参加すると、あなたはオプションのカップルを持っています。あなたがすることは、あなたが望むものによって決まります。共通鍵だけでRDDが必要ですか?

val leftJoined = rdd1.join(rdd2) 
leftJoined.collect 
res1: Array[(String, (String, String))] = Array((test,(foo,foo3))) 

あなたはrdd2から行方不明のキーがNoneで埋めしたい場合は、leftOuterJoinを使用します。

val leftOuter = rdd.leftOuterJoin(rdd2) 
leftOuter.collect 
res2: Array[(String, (String, Option[String]))] = Array((test2,(foo2,None)), (test,(foo,Some(foo3)))) 

あなたはどちらの側から行方不明のキーがNoneで満たされるようにしたい場合は、fullOuterJoinを使用します。

val fullOuter = rdd1.fullOuterJoin(rdd2) 
fullOuter.collect 
res3: Array[(String, (Option[String], Option[String]))] = Array((test2,(Some(foo2),None)), (test3,(None,Some(foo4))), (test,(Some(foo),Some(fo3)))) 
関連する問題