2017-06-07 22 views

回答

6

驅動程序查看文件元數據 - 檢查它是否存在,檢查目錄中的文件是否是目錄,並檢查它們的大小。然後它將任務發送給實際閱讀文件內容的工作人員。通信基本上是「你讀這個文件,從這個偏移量開始,這個長度。」

HDFS將大文件分割成塊,並且spark會(通常/經常)根據塊來分割任務,因此跳過該偏移量的過程將非常有效。

其他文件系統往往操作類似,但並不總是如此。如果編解碼器不可拆分,壓縮也可能會混淆此過程。

+0

這很有道理。謝謝(你的)信息。 – pythonic

0

textfile創建RDD,如ref提到:可以使用SparkContext的文本文件的方法來創建

文本文件RDDS。

也有這樣一個字條:

如果使用本地文件系統的路徑,文件也必須在 工作器節點上相同的路徑訪問。將文件複製到 所有工作人員或使用網絡安裝的共享文件系統。

這意味着您對驅動程序解析文件然後將數據分發給從服務器的猜測是錯誤的。

+0

好的,這就引出了一個問題,即工作人員如何在沒有驅動程序幫助的情況下同步逐行讀取文件?假定該文件位於HDFS中,而不是本地文件。 – pythonic

+0

我沒有說過程中司機不活動。 [tag:spark]的內部機制定義@pythonic。 – gsamaras

+0

好的,驅動程序可以幫助創建RDD,但我假設文件很大,比如說1 Tera字節。現在如何處理這樣龐大的數據。它並不是RDD是由驅動程序爲整個數據傳播的。它必須逐份閱讀。我仍然對整個事情感到困惑。 – pythonic

相關問題