我正在使用PySpark,而我正在寻找一种方法将RDD划分为n个公平的部分。鉴于:
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'))]]
最有效的方法是将两个公平的部分(rdds),3和3作为长度... Thx!