官术网_书友最值得收藏!

【任務(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)行展示。

主站蜘蛛池模板: 乌兰浩特市| 满洲里市| 定远县| 青阳县| 忻城县| 大庆市| 万年县| 博客| 华安县| 金坛市| 莫力| 伊吾县| 大同市| 太原市| 临猗县| 集贤县| 济宁市| 玉龙| 大同县| 建宁县| 深圳市| 黎平县| 苏尼特左旗| 兰西县| 东至县| 南投县| 梁河县| 大关县| 泗水县| 京山县| 丽江市| 永平县| 南澳县| 石狮市| 承德县| 苏尼特左旗| 丽江市| 从江县| 吴忠市| 黄陵县| 乌鲁木齐市|