2016-03-29 122 views
1

n個部分我想一個RDD拆分爲使用Pyspark拆分RDD到pySpark

長度相等的正部位如果RDD是一樣的東西

data = range(0,20) 
d_rdd = sc.parallelize(data) 
d_rdd.glom().collect() 
[[0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [10, 11, 12, 13, 14, 15, 16, 17, 18, 19]] 

我想設置的任何兩個隨機數的在一起,就像

[[0,4],[6,11],[5,18],[3,14],[17,9],[12,8],[2,10],[1,15],[13,19],[7,16]] 

回答

2

兩種方法:

集分區NUM磨片N使用並行,並且使用函數不同()

data = range(0,20) 
d_rdd = sc.parallelize(data, 10).distinct() 
d_rdd.glom().collect() 

使用再分配()不同()

data = range(0,20) 
d_rdd = sc.parallelize(data).repartition(10).distinct() 
d_rdd.glom().collect() 
+0

感謝您的回答。我也嘗試過,在我看來,我沒有得到確切數量的分區。 o/p就像 [[18,19],[0,1],[12,13],[8,9],[],[6,7,16,17],[2,3] ,[14,15],[10,11],[4,5]] 如果可以看到,則有一個包含四個元素的分區和一個沒有元素的分區。是否可以使用partitionBy來獲得所需的結果。 – Jaswant

+0

添加distinct()並嘗試 – yanghaogn