2015-08-08 154 views
2

如果我創建了兩個RDDS這樣的:星火多維RDD分區

a = sc.parallelize([[1 for j in range(3)] for i in xrange(10**9)]) 

b = sc.parallelize([[1 for j in xrange(10**9)] for i in range(3)]) 

當你去想它劃分第一個是直觀的,十億行劃分周圍的工人。 但第二個有3行,每行有十億個項目。

我的問題是:對於第二行,如果我有2個工人,一行是去一個工人,另外兩行去另一個工人?

回答

2

Spark中的數據分佈僅限於用於創建RDD的頂級序列。

根據第二種情況下的配置,您最多會得到三個非空分區,每個分區都分配給單個工作人員,因此在第二種情況下1-2分離可能是結果。

一般而言,少量的元素,特別是非常大的元素,並不適合Spark處理模型。

+0

這是否意味着,如果我有10名工人,數據將被分區只有3名工人?(在第二行的情況下) – alwaysprep

+0

這就是對的。不管你有多少工人會閒置。而且每個元素都必須適合工作者的記憶。 – zero323

+0

謝謝。這真的有幫助。 – alwaysprep