2015-06-14 38 views
0

我遇到了一個大問題!避免RDD嵌套在沒有陣列的Spark中

我有一個RDD[(Int, Vector)],其中Int是一種標籤。

例如:

(0, (a,b,c)); 
(0, (d,e,f)); 
(1, (g,h,i)) 

等等

現在,我需要用這個RDD(我稱之爲myrdd)是這樣的:

myrdd.map{ case(l,v) => 
    myrdd.map { case(l_, v_) => 
     compare(v, v_) 
    } 
} 

現在,我知道火花使用RDD嵌套是不可能的。

我可以繞過使用數組的問題。但對於我的問題,我無法使用Array或任何內存中的內容。

如何解決我的問題而不使用陣列?

在此先感謝!

回答

2

cartesian聽起來像它應該工作:

myrdd.cartesian(myrdd).map{ 
    case ((_,v),(_,v_)) => compare(v,v_) 
} 
+0

謝謝您的回答。 這意味着如果我的rdd有N個元素,笛卡爾產品會給我一個N * N個元素的rdd,對吧? – aster2590

+0

這是對的。 –