JavaRDD<String> textFile = sc.textFile("C://test.txt");
說我有1000行test.txt文件。我有一個四核處理器的單機版。這裏是我的理解火花如何實現並行性在這裏Spark在這種情況下如何工作?
- Spark將從單個線程中的文件讀取字符塊。不確定是否有默認的塊大小或取決於文件大小
- Spark將根據以下兩個參數確定要創建多少個分區 a)在步驟1中讀取的數據大小和 b)基於數字cpu中的核心數
- 根據步驟2中的分區大小,它會產生線程。如果有3個分區,它會產生三個線程。
我的理解是否正確?
中實現,根據我的知識,Spark默認將分區等同於文本文件塊的數量。我們可以通過給出 (文件路徑,分區數量)手動定義分區 – user4342532
您可以詳細說明文件中塊的含義是什麼嗎?你的意思是有1000行,spark會將它分成4塊,然後創建4個分區,然後在同一臺機器上創建4個線程,否則發送給4個工作者。這樣對嗎 ? –
在Hadoop中,默認塊大小爲64 MB(apache distribution,如果cloudera爲128mb)如果你的文件大小是假設爲256mb。其默認存儲爲4個塊(4 * 64 mb)。 Spark默認將每個塊作爲每個分區,並且我們可以管理它們。 – user4342532