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

Spark 採坑系列java

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

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

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

hello sparkoop

hello worldspa

hello spark!scala

 

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

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

 

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

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路徑並再次嘗試。

 

最後成功!

相關文章
相關標籤/搜索