Python 使用PySpark将RDD划分为两个或多个公平的RDD

Python 使用PySpark将RDD划分为两个或多个公平的RDD,python,apache-spark,pyspark,rdd,partitioning,Python,Apache Spark,Pyspark,Rdd,Partitioning,我正在使用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

我正在使用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()
这给了我两个不公平的RDD。 len(重新分配的集合()[0])给出了:2和len(重新分配的集合()[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'))]]

最有效的方法是将结果分成两部分(RDD),3和3作为长度。。谢谢

也许您对随机拆分(Weights,seed)感兴趣,即:

使用提供的权重拆分此RDD


它将返回一个RDD列表

@Avihoo-Mamka-Thx但没有答案:(有一个关于文件数量的解释。你是否在大量文件上尝试过,并得到了同样不公平的RDD?