2016-12-06 48 views
0

我想知道,如果我應該設置分區號,那麼一次轉換就有一個numPartitions參數。 例如,當我在代碼中創建第一個RDD時,我設置了分區號。如果我創建另一個RDD,默認分區號是否與第一個RDD相同?是否需要在任何地方設置分區號? spark

+0

所依賴的未來RDD老放射性散佈轉型?如果主要是。如果它是從數據形成的新的rdd,則將應用spark內部算法。 –

+0

好吧,我明白了。謝謝! – volity

+0

分區數量可能發生變化(轉換期間)的一種情況是使用混洗操作的情況。你可以[調整設置](https://spark.apache.org/docs/1.6.0/sql-programming-guide.html#other-configuration-options)。 –

回答

1

默認情況下,spark會負責將您的數據集劃分爲多個分區。在初始階段執行的任何操作也將被照顧。

但是,有時您可能需要將所有數據放在一個分區中,以根據功能要求進行更好的分組。然後分區號碼將有所幫助。在此階段中,您還應該驗證執行程序的內存設置,因爲所有數據都將位於一個分區。

另一種情況是,執行過濾時。即使大部分記錄被過濾掉,在執行過濾時,內部的相同分區仍將保留。這導致空心分區。所以在這種情況下,你可以合併。此方法採用numOfPartitions。

還有一個rePartition()方法,它將numOfPartitions作爲輸入。這涉及洗牌。你可以找到他們here

所以,你可以選擇根據自己的需要

相關問題