2016-03-29 88 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