Spark SQLの有無にかかわらず、2つの通常のRDDを結合する 質問する

Spark SQLの有無にかかわらず、2つの通常のRDDを結合する 質問する

1 つ以上の列で2 つの通常のテーブルを結合する必要があります。論理的には、この操作は 2 つのテーブルのデータベース結合操作と同等です。これが可能なのは、この方法だけなのか、それとも他の方法があるのRDDsでしょうか。Spark SQL

具体的な例として、r1主キーを持つRDD を考えてみましょうITEM_ID

(ITEM_ID, ITEM_NAME, ITEM_UNIT, COMPANY_ID)

r2主キーを持つRDD COMPANY_ID:

(COMPANY_ID, COMPANY_NAME, COMPANY_CITY)

参加したいr1ですr2

これはどうすればできるのでしょうか?

ベストアンサー1

Soumya Simanta は良い答えを出しました。ただし、結合された RDD の値は なのでIterable、結果は通常のテーブル結合とあまり似ていない可能性があります。

あるいは、次のこともできます。

val mappedItems = items.map(item => (item.companyId, item))
val mappedComp = companies.map(comp => (comp.companyId, comp))
mappedItems.join(mappedComp).take(10).foreach(println)

出力は次のようになります。

(c1,(Item(1,first,2,c1),Company(c1,company-1,city-1)))
(c1,(Item(2,second,2,c1),Company(c1,company-1,city-1)))
(c2,(Item(3,third,2,c2),Company(c2,company-2,city-2)))

おすすめ記事