2016-11-09 81 views
-1

我正在使用PySpark,并且正在寻找一种将RDD划分为n个公平部分的方法。鉴于:使用PySpark将RDD分区为两个或多个公平的RDD

rdd = sc.parallelize ([(u'28b195c271f', (u'm', u'50c41480')), 
         (u'_guid_UDeL9', (u'f', u'K0r_MuQH')), 
         (u'17503716353', (u'f', u'KUDRwaYm')), 
         (u'171f92200d6', (u'f', u'bdf53cb6')), 
         (u'_guid_NCw7S', (u'f', u'KSJakOd2')), 
         (u'331d8410d49', (u'f', u'1F37807A'))]) 

这是我的代码:

N = 2 
repartionned_rdd = rdd.repartition(N).distinct().glom() 

这是给我两个不公平RDDS。 len(repartionned_rdd.collect()[0])给出:2和len(repartionned_rdd.collect()[1])给出4!结果:

[[(u'28b195c271f', (u'm', u'50c41480')), 
(u'_guid_UDeL9', (u'f', u'K0r_MuQH'))], 
[(u'17503716353', (u'f', u'KUDRwaYm')), 
(u'171f92200d6', (u'f', u'bdf53cb6')), 
(u'_guid_NCw7S', (u'f', u'KSJakOd2')), 
(u'331d8410d49', (u'f', u'1F37807A'))]] 

什么是有作为的结果2个公正部分(RDDS),3和3 lenght .. THX的最有效的方法!

+1

http://stackoverflow.com/questions/38102013/how-to-repartition-evenly-in-spark –

+0

@Avihoo Mamka Thx但没有答案:( – DataAddicted

+0

有一个关于文件数量的解释。你在大量的文件上尝试,并得到相同的不公平的rdds? –

回答

1

也许你有兴趣的randomSplit(weigths,种子)function说:

分裂这个RDD与所提供的权重。

它将返回一个RDD列表。