0

左側のキーの 1 つが他の RDD に対応する値を持っていないことを知って、Spark で結合を実行しようとしています。

ドキュメントには、キーが見つからない場合、オプションとして None を指定して結合を実行する必要があると書かれていますが、タイプの不一致エラーが引き続き発生します。

ここに洞察はありますか?

4

1 に答える 1

0

次の 2 つの RDD を使用します。

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))))
于 2016-03-25T18:04:58.110 に答える