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)))