- Spark分布式處理實(shí)戰(zhàn)
- 劉均 王璐烽主編
- 808字
- 2023-10-09 15:52:00
【任務(wù)實(shí)施】
1.使用Spark計(jì)算圓周率
Spark安裝目錄的examples目錄下面提供了很多基礎(chǔ)案例,SparkPi就是其中一個(gè),它實(shí)現(xiàn)了計(jì)算圓周率的功能。接下來(lái)使用spark-submit命令提交任務(wù)并進(jìn)行圓周率的計(jì)算。
spark-submit \
--class org.apache.spark.examples.SparkPi \
--master local[2] \
./examples/jars/spark-examples_2.12-3.0.0.jar \
10
主要實(shí)現(xiàn)步驟如下。
(1)啟動(dòng)集群環(huán)境,運(yùn)行spark-submit命令,如圖1-13所示。

圖1-13 運(yùn)行spark-submit命令
(2)查看運(yùn)行結(jié)果,可以查看圓周率的近似值,如圖1-14所示。

圖1-14 計(jì)算圓周率
2.Spark單詞統(tǒng)計(jì)任務(wù)的提交與運(yùn)行
下面統(tǒng)計(jì)文本文件中單詞的數(shù)量。文本文件的單詞之間使用空格進(jìn)行分隔。通過(guò)向Spark提交任務(wù)的方式計(jì)算所有文本文件中單詞的數(shù)量。使用spark-shell命令對(duì)文本文件中的單詞進(jìn)行統(tǒng)計(jì),主要使用了RDD的轉(zhuǎn)換算子和行動(dòng)算子。這里只簡(jiǎn)單介紹RDD算子的使用方法,在后面的內(nèi)容中會(huì)做詳細(xì)講解。主要的實(shí)現(xiàn)步驟如下。
(1)創(chuàng)建存放文本文件的目錄input。
[hadoop@hadoop1 ~]$ cd /opt/module/spark
[hadoop@hadoop1 spark]$ mkdir input
(2)進(jìn)入input目錄,準(zhǔn)備創(chuàng)建wc1.txt和wc2.txt兩個(gè)文本文件。
[hadoop@hadoop1 spark]$ cd input
(3)創(chuàng)建并編輯wc1.txt文件。
[hadoop@hadoop1 input]$ vi wc1.txt
wc1.txt的文件內(nèi)容如下。
hello world
hello spark
(4)創(chuàng)建并編輯wc2.txt文件。
[hadoop@hadoop1 input]$ vi wc2.txt
wc2.txt的文件內(nèi)容如下。
hello scala
hello bigdata
(5)提交任務(wù)。
啟動(dòng)Spark Shell。Spark Shell是一個(gè)基于Scala的命令的運(yùn)行環(huán)境,在其中可以直接編寫Scala代碼,如圖1-15所示。
[hadoop@hadoop1 input]$ spark-shell

圖1-15 啟動(dòng)Spark Shell
使用RDD的轉(zhuǎn)換算子和行動(dòng)算子實(shí)現(xiàn)單詞統(tǒng)計(jì)功能。提交運(yùn)行并查看運(yùn)行結(jié)果,結(jié)果是以數(shù)組的形式進(jìn)行展示,以二元組的形式輸出單詞的數(shù)量,如圖1-16所示。
sc.textFile("/opt/module/spark/input").flatMap(_.split(" ")).map((_,1)).reduceByKey (_+_).collect

圖1-16 單詞統(tǒng)計(jì)結(jié)果
在完成主要的操作步驟以后,為方便讀者理解單詞統(tǒng)計(jì)任務(wù),下面對(duì)RDD的算子進(jìn)行簡(jiǎn)要說(shuō)明。
● textFile:轉(zhuǎn)換算子,參數(shù)是文件路徑,讀取文件夾下面的文本文件并轉(zhuǎn)換為RDD。
● flatMap:轉(zhuǎn)換算子,針對(duì)RDD中的每一行文本進(jìn)行扁平化映射操作,將每行文本按照空格進(jìn)行分隔,轉(zhuǎn)換為單詞形式。
● map:轉(zhuǎn)換算子,進(jìn)行映射操作,將單詞轉(zhuǎn)換為二元組的形式,如將hello轉(zhuǎn)換為(hello,1)的形式。
● reduceByKey:轉(zhuǎn)換算子,以單詞作為主鍵進(jìn)行聚合操作,簡(jiǎn)單來(lái)說(shuō),就是將相同的單詞進(jìn)行數(shù)量加和操作,如將(hello,1)和(hello,1)進(jìn)行聚合操作,轉(zhuǎn)換為(hello,2)。
● collect:結(jié)果收集,將結(jié)果以數(shù)組的形式進(jìn)行展示。
- 有趣的二進(jìn)制:軟件安全與逆向分析
- 大數(shù)據(jù)導(dǎo)論
- WS-BPEL 2.0 Beginner's Guide
- Starling Game Development Essentials
- Oracle PL/SQL實(shí)例精解(原書(shū)第5版)
- 達(dá)夢(mèng)數(shù)據(jù)庫(kù)運(yùn)維實(shí)戰(zhàn)
- 深入理解InfluxDB:時(shí)序數(shù)據(jù)庫(kù)詳解與實(shí)踐
- Mastering ROS for Robotics Programming(Second Edition)
- 算法設(shè)計(jì)與分析
- 算力經(jīng)濟(jì):從超級(jí)計(jì)算到云計(jì)算
- AndEngine for Android Game Development Cookbook
- MySQL性能調(diào)優(yōu)與架構(gòu)設(shè)計(jì)
- GameMaker Game Programming with GML
- Hands-On Big Data Analytics with PySpark
- 醫(yī)療大數(shù)據(jù)分析與應(yīng)用