2016-11-10 43 views
0

正如問題中所指出的,我想用一列rdd來做笛卡兒。例如:Pyspark只有一列的笛卡爾積?

rdd1: 
id1 A 
id2 B 
id3 C 

我的輸出應該是:

id1 A A 
id1 A B 
id1 A C 
id2 B A 
id2 B B 
id2 B C 
id3 C A 
id3 C B 
id3 C C 

回答

0

爲此,您可以創建一個新的RDD僅與第二列,rdd2=rdd.map(lambda l: l[1])。然後做這兩個RDDS的cartesian

rdd.cartesian(rdd2).map(lambda v: (v[0][0],v[0][1],v[1]))

map是那裏,因爲cartesian將返回喜歡((id1,A),A)行,而map轉換,要(id1,A,A)