2017-05-27 69 views
0

以下行是否創建單個RDD或多個RDD多RDD與分區?

val textFile = sc.textFile("README.txt") 

我的理解是,它會創建單個RDD具有多個partitions(128 partition每個MB默認情況下),其中每個partition可以相同/不同的節點上進行進一步處理。我們可以請求 Spark創建多個單獨的RDD而不是單個?如果是的話,它有什麼優點/缺點?

+0

爲什麼你想要多個RDD而不是單個RDD?你認爲這有什麼好處? – eliasah

+0

這究竟是我的問題嗎?將會啓動默認情況下始終創建一個rdd?我們是否需要在任何情況下改變這種行爲? –

+0

那麼你不需要明確地處理分區數據,這通常是爲了框架來處理,但是在某些情況下,如果每個例子的數據是傾斜的,你都需要使用定製分區器。通信非常昂貴,因此佈置數據以儘量減少網絡流量可以大大提高性能。不幸的是,所有這些都很乏味和寬泛。 – eliasah

回答

0

當你說星火將創建一個單一的與RDD一個或多個分區,當你閱讀使用val textFile = sc.textFile("README.txt")

一個文件(可以由你控制或會由底層數據源來決定)你是正確的以這種方式考慮:特定的數據源將對應於單個RDD,並行性級別由該特定RDD中的分區數決定。 如果你想使用另一個數據源,你可以選擇在同一個Spark上下文中創建另一個RDD。 在大多數情況下,嘗試使來自同一數據源的多個RDD完全不必要。

+0

並行和分區有什麼區別? –

+0

@RameshMaharjan每個分區都由一個單獨的CPU核心處理。 1分區=>僅使用1個內核。多個分區=>用於同一作業的多個核心。因此分區決定了處理作業的並行性水平。 https://stackoverflow.com/a/35804407/3960021 – septra

+0

是的,絕對。謝謝。我只是想確保我解釋正確的答案,因爲我得到了一個downvote。謝謝 –