環境:ubuntu16.04
在spark集羣中想要獲取本地文件數據集iris.txt,但是卻報了上圖這樣的錯誤,顯示這個文件在這個路徑不存在 。然後我在本地這個文件路徑查看是否有這個txt文件
結果發現本地有這個文件啊,這就有點問題了
然後上網查資料,資料如下:
在spark-shell裏執行textFile方法時,如果total-executor-cores設置爲N,哪N臺機有CoarseGrainedExecutorBackend進程的,讀取的文件需要在這N臺機都存在如果設置爲1,就讀取指定的master spark的文件如果只執行 ./spark-shell 就讀取啓動命令的主機的文件,即在哪臺機啓動就讀取哪臺機
但問題是我之前啓動就是直接用的 ./spark-shell 命令(如下),應該沒問題啊。
然後我再試着用更精確的命令?./bin/spark-shell --master spark://master:7077 --executor-memory 1G --total-executor-cores 1
但是還是報本地文件不存在的錯誤,接着我又試着讓每個Worker節點的相應位置都有要讀取的數據文件,結果還是報這個錯誤。沒辦法只好用最後一招,直接把iris.txt文件上傳到hdfs,達到數據共享。
一開始我直接上傳到根目錄(如上圖)
結果它默認路徑是hdfs://master:9000/user/ubuntu/,好吧,那我把文件傳到/user/ubuntu/下
然後最終問題解決!!!