我有型RDD的4rdds:((INT,INT,INT)值)和我的RDDS是加入多個RDDS
rdd1: ((a,b,c), value)
rdd2:((a,d,e),valueA)
rdd3:((f,b,g),valueB)
rdd4:((h,i,c),valueC)
如何加入像RDD1集的RDDS上 「一」 RDD1集加入RDD2在「b」上加入rdd2,在「c」上加入rdd1 rdd3
所以在Scala中的輸出是finalRdd: ((a,b,c),valueA,valueB,valueC,value))
?
我試着用collectAsMap這樣做,但它沒有很好地工作,並拋出異常
代碼只是爲了RDD1集加入RDD2
val newrdd2=rdd2.map{case((a,b,c),d)=>(a,d)}.collectAsMap
val joined=rdd1.map{case((a,b,c),d)=>(newrdd2.get(a).get,b,c,d)}
例如
rdd1: ((1,2,3),animals)
rdd2:((1,anyInt,anyInt),cat)
rdd3:((anyInt,2,anyInt),cow)
rdd 4: ((anyInt,anyInt,3),parrot)
輸出應該是((1,2,3),animals,cat,cow,parrot)
你能否寫一個更好的例子,數據裏面的rdds? –
我添加了一個例子,它不關心anyInt字段上的數字是什麼 – luis
rdd1中是否有重複的行?重複密鑰? (例如,具有「(1,2,3)」和值「動物」和「另一種動物」的兩個元素) –