2016-11-09 202 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列表。