更新時(shí)間:2020-12-21 來源:黑馬程序員 瀏覽量:
下面通過啟動(dòng)Spark-Shell,并且使用Scala語(yǔ)言開發(fā)單詞計(jì)數(shù)的Spark程序,現(xiàn)有文本文件words.txt(讀者需要在本地創(chuàng)建文件并上傳至指定目錄)在HDFS中的/spark/test路徑下,且文本內(nèi)容如下。
hello hadoop hello spark hellp itcast
如果使用Spark Shell來讀取HDFS中的/spark/test/ words.txt文件,具體步驟如下:
1.整合Spark與HDFS
Spark加載HDFS上的文件,需要修改spark-env.sh配置文件,添加HADOOP_CONF_DIR配置參數(shù),指定Hadoop配置文件的目錄,添加配置參數(shù)如下。
\#指定HDFS配置文件目錄 export HADOOP_CONF_DIR=/export/servers/hadoop-2.7.4/etc/hadoop
2.啟動(dòng)Hadoop 、Spark服務(wù)
配置完畢后,啟動(dòng)Hadoop集群服務(wù),并重新啟動(dòng)Spark集群服務(wù),使配置文件生效。
3.啟動(dòng)Spark-Shell編寫程序
啟動(dòng)Spark-Shell交互式界面,執(zhí)行命令如下。
$ bin/spark-shell --master local[2]
執(zhí)行上述命令,Spark-Shell啟動(dòng)成功后,就會(huì)進(jìn)入如圖1所示的程序交互界面。
圖1 spark-shell模式
Spark-Shell本身就是一個(gè)Driver,它會(huì)初始化一個(gè)SparkContext對(duì)象為“sc”,用戶可以直接調(diào)用。下面編寫Scala代碼實(shí)現(xiàn)單詞計(jì)數(shù),具體代碼如下。
scala > sc.textFile("/spark/test/words.txt").flatMap(_.split(" ")).map((_,1)).reduceByKey(_+_).collect res0: Array[(String, Int)] = Array((itcast,1), (hello,3), (spark,1), (hadoop,1))
上述代碼中,res0表示返回的結(jié)果對(duì)象,該對(duì)象中是一個(gè)Array]類型的集合,(itcast,1)則表示“itcast”單詞總計(jì)為1個(gè)。
4.退出Spark-Shell客戶端
可以使用命令“:quit”退出Spark-Shell,如下所示。
scala > :quit
猜你喜歡
HBase數(shù)據(jù)庫(kù)物理存儲(chǔ)的存儲(chǔ)方式介紹
Scala的控制結(jié)構(gòu)語(yǔ)句有哪幾種?各語(yǔ)法格式介紹
Scala的控制結(jié)構(gòu)語(yǔ)句有哪幾種?各語(yǔ)法格式介紹
2020-12-17如何使用IDEA工具開發(fā)一個(gè)WordCount單詞計(jì)數(shù)程序?
2020-12-17Scala在使用聲明值和變量時(shí)的注意事項(xiàng)有哪些?
2020-12-17詳解MapReduce編程的Map模型和Reduce模型
2020-12-17HBase數(shù)據(jù)庫(kù)物理存儲(chǔ)的存儲(chǔ)方式介紹【大數(shù)據(jù)文章】
2020-12-17HDFS分布式文件系統(tǒng)的優(yōu)點(diǎn)缺點(diǎn)有哪些?
2020-12-16