Spark 採坑系列(一) 集羣環境讀取本地文件的坑

Spark 採坑系列

今天在網上看了一個例子,Spark啓動後讀取文件並計算的例子,自己在按照網上方法使用的時候意外菜了坑。

首先,我將3臺虛擬機的Spark集羣以及Hadoop集羣啓動。

然後我在其中一個服務器上編輯了一個文本,命名sparkFirst,內容如下:

hello spark

hello world

hello spark!

 

保存後,存在了其中一臺服務器上,然後我開始試驗:

首先,執行spark的控制檯命令spark-shell

 

然後,讀取文本,並執行計算行數的命令,結果報錯:

scala> val lines=sc.textFile("/opt/soft/hadoop/sparkFirst")

lines: org.apache.spark.rdd.RDD[String] = /opt/soft/hadoop/sparkFirst MapPartitionsRDD[1] at textFile at <console>:24

 

scala> lines.count()

報錯如圖

 

然後開始上網找原因,網上說如果Spark採用集羣模式讀取本地文件,必須保證每個集羣下都有相同的問題件,否則就會報找不到文件的錯誤

WARN TaskSetManager: Lost task 0.0 in stage 0.0 (TID 0, 192.168.194.130, executor 1): java.io.FileNotFoundException: File file:/opt/soft/hadoop/sparkFirst does not exist

並且,很多人建議採用hdfs的方式加載文件,這樣就不會出現剛纔的問題了,好用並且高大上。既然這樣,我們就來試一試,把剛纔的文件上傳到hdfs中:

 

我們將sparkFirst 文件上傳到了hdfs的根目錄(注意最後的 .),然後我們將加載文件的路徑改爲hdfs路徑並再次嘗試。

 

最後成功!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章