在Spark shell中基於HDFS文件系統進行wordcount交互式分析


Spark是一個分布式內存計算框架,可部署在YARN或者MESOS管理的分布式系統中(Fully Distributed),也可以以Pseudo Distributed方式部署在單個機器上面,還可以以Standalone方式部署在單個機器上面。運行Spark的方式有interactive和submit方式。本文中所有的操作都是以interactive方式操作以Standalone方式部署的Spark。具體的部署方式,請參考Hadoop Ecosystem

HDFS是一個分布式的文件管理系統,其隨着Hadoop的安裝而進行默認安裝。部署方式有本地模式和集群模式,本文中使用的時本地模式。具體的部署方式,請參考Hadoop Ecosystem

 

目標:

能夠通過HDFS文件系統在Spark-shell中進行WordCount的操作。

 

前提:

存在一個文件,可通過下面的命令進行查看。

hadoop fs -ls /

 

如果不存在,添加一個(LICENSE文件需要在本地目錄中存在)。更多hadoop命令,請參考hadoop命令

hadoop fs -put LICENSE /license.txt

通過Web Browser查看Hadoop是否已經運行。

http://localhost:50070

 

步驟:

Step 1:進入Spark-shell交互式命令行。

spark-shell

Step 2:讀取license.txt文件,並check讀取是否成功。如果不存在,則提示如下錯誤。

val s = sc.textFile("hdfs://localhost:9000/license.txt")

s.count

Step 3:設定輸出的文件個數並執行統計邏輯

val numOutputFiles = 128

val counts = s.flatMap(line => line.split(" ")).map(word => (word, 1)).reduceByKey(_ + _, numOutputFiles)

Step 4:保存計算結果到HDFS中

counts.saveAsTextFile("hdfs://localhost:9000/license_hdfs.txt")

Step 5:在shell中查看結果

hadoop fs -cat /license_hdfs.txt/*

 

結論:

通過HDFS,我們可以在Spark-shell中輕松地進行交互式的分析(word count統計)。

 

參考資料:

http://hadoop.apache.org/docs/r1.0.4/cn/commands_manual.html

http://spark.apache.org/docs/latest/programming-guide.html

http://coe4bd.github.io/HadoopHowTo/sparkScala/sparkScala.html

http://coe4bd.github.io/HadoopHowTo/sparkJava/sparkJava.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM