我在本地PC上有一個主人,並使用兩臺服務器作爲工人。當我啓動Spark程序時,首先我必須導入我的輸入文件。對於正確的輸入(目前)我應該有我的輸入文件在主人和兩個工人的硬盤(路徑必須是相同的)。這意味着相同的數據集應該放在三個不同的地方。我怎樣才能避免這種情況,並將我的數據集存儲在獨特的地方,而不會出現輸入錯誤?火花,輸入文件的路徑
回答
爲了做到這一點,您需要使用分佈式文件系統,如HDFS(Hadoop)。的讀取文件的兩個實例如下:
tweets = sc.textFile("hdfs://scrapper.ccs.neu.edu/user/cbw/a1_tweets.txt") # load data from HDFS
words = sc.textFile("hdfs://scrapper.ccs.neu.edu/user/cbw/words*.txt") # load data from HDFS
第一個是一個常規文件讀取,而第二個具有*這將導致讀取多個文件(就像wholeTextFiles)。
請注意,當您在HDFS中引用文件時,必須指定一個包含主機名(例如scrapper)的完全限定URL。
HDFS中的數據存儲在塊中並存儲在所有數據節點中。有關此文件系統的元數據存儲在Namenode上。因此,您將數據傳播到不同的節點,並且hadoop會關心節點之間何時以及如何發送塊。
如果在運行spark時HDFS和HADOOP_HOME設置正確,你*不需要完全限定的URL,因爲HDFS將是默認的FS。 –
是真的,我忘記了。感謝您的提醒! – JorgeGlezLopez
一般要點是讓所有工作節點都可以看到文件系統。 (HDFS),MapR文件系統(MapR-FS),Cassandra,OpenStack Swift,Amazon S3,Kudu(取自here)的各種Spark接口。
本地文件系統是您提到的選項之一 - 所有工作人員的幾個副本。使用「本地」文件系統的另一種情況是安裝網絡驅動器或使用諸如NAS或SAN之類的東西。
所有這些方法需要的只是不同的URI輸入文件,但都結束了簡單的電話
sc.textFile("protocol://path/to/a/file");
- 1. 得到火花hdfs文件路徑
- 2. 從火花傳輸中讀取新的s3文件路徑
- 3. newHadoopAPI中的多個輸入路徑以供火花讀取Lzo文件
- 4. 空文件輸出火花
- 5. `input_file_name`上的過濾器火花路徑
- 6. 正火文件路徑
- 7. 火花 「基本路徑」 選項設置
- 8. 更改輸入文件的路徑
- 9. 根據輸入文件路徑的
- 10. 的Python用戶輸入文件路徑
- 11. 火花:如何從火花外殼運行火花文件
- 12. 如何讓火花忽略缺少的輸入文件?
- 13. 用戶輸入文件路徑
- 14. $/FullStackSampleApplication路徑不是文件。 (輸入InvalidOperationException)
- 15. MLCP輸入文件路徑問題
- 16. CSS文件輸入隱藏路徑
- 17. 在火花傳輸中寫入處理文件
- 18. HDFS文件作爲輸入提供給火花Mllib
- 19. 火花餘弦相似度(DIMSUM算法)稀疏輸入文件
- 20. 如何使用火花從文件系統輸入
- 21. 火花流多輸入kafka dstreams混淆
- 22. JUNIT:從文件路徑輸入文件中config文件夾
- 23. 文件傳輸路徑
- 24. 火花流文件流
- 25. 將文件自動上傳到路徑中的輸入文件
- 26. 嘗試獲取文件的路徑 - 輸入類型=文件 - PHP
- 27. 輸入文本,帶狀假路徑,輸入文本輸出
- 28. 來自文件路徑的Java輸入和輸出流
- 29. 嵌入文件路徑名
- 30. 放入文件路徑
使用分佈式文件系統? – zero323
把你的文件放在hdfs上,然後從spark那裏加載。 – Mahendra
@ zero323,Mahendra,非常感謝你 – Guforu