2017-08-17 107 views
0

我有一個Spark獨立羣集,有2個工作節點和1個主節點。Spark獨立羣集無法讀取本地文件系統中的文件

使用spark-shell,我能夠從本地文件系統的文件中讀取數據,然後做了一些轉換並將最終的RDD保存在/ home/output中(假設) RDD已成功保存,但僅在一個工人節點和主節點上只有_SUCCESS文件在那裏。

現在,如果我想從/ home/output讀取這個輸出數據,我沒有收到任何數據,因爲它在master上獲得0數據,然後我假設它沒有檢查其他工作節點。

如果有人能夠說明爲什麼Spark沒有從所有工作節點讀取或者Spark用於從工作節點讀取數據的機制是什麼,那將是非常棒的。

scala> sc.textFile("/home/output/") 
res7: org.apache.spark.rdd.RDD[(String, String)] = /home/output/ MapPartitionsRDD[5] at wholeTextFiles at <console>:25 

scala> res7.count 
res8: Long = 0 

回答

0

SparkContext即SC默認指向HADOOP_CONF_DIR.This一般設置爲hdfs://,這意味着當你說sc.textFile("/home/output/")它搜索的文件/目錄爲hdfs:///home/output,而你的情況是不存在的HDFS。 file://指向本地文件系統

嘗試sc.textFile("file:///home/output"),因此明確告訴Spark從本地文件系統讀取。

+0

我試過,但沒有工作。目前的情況是,master有_SUCCESS文件的輸出文件夾,worker節點在「output」文件夾中有剩餘的部分文件。 現在,當我閱讀這個輸出文件夾時,它給了我空白,我認爲它只讀取了主文件。 –

+0

可以請你提供初始步驟,使用你寫的/ home/output? – thinkinbee

0

您應該將該文件放在具有相同路徑和名稱的所有工作機器上。

+0

我不能每次都這樣做,因爲生成的這些文件將成爲某些程序的輸出。 –

+0

或者yiu可以把文件放到HDFS中。 – Robin

相關問題