【任务实施】
1.使用Spark计算圆周率
Spark安装目录的examples目录下面提供了很多基础案例,SparkPi就是其中一个,它实现了计算圆周率的功能。接下来使用spark-submit命令提交任务并进行圆周率的计算。
spark-submit \
--class org.apache.spark.examples.SparkPi \
--master local[2] \
./examples/jars/spark-examples_2.12-3.0.0.jar \
10
主要实现步骤如下。
(1)启动集群环境,运行spark-submit命令,如图1-13所示。
图1-13 运行spark-submit命令
(2)查看运行结果,可以查看圆周率的近似值,如图1-14所示。
图1-14 计算圆周率
2.Spark单词统计任务的提交与运行
下面统计文本文件中单词的数量。文本文件的单词之间使用空格进行分隔。通过向Spark提交任务的方式计算所有文本文件中单词的数量。使用spark-shell命令对文本文件中的单词进行统计,主要使用了RDD的转换算子和行动算子。这里只简单介绍RDD算子的使用方法,在后面的内容中会做详细讲解。主要的实现步骤如下。
(1)创建存放文本文件的目录input。
[hadoop@hadoop1 ~]$ cd /opt/module/spark
[hadoop@hadoop1 spark]$ mkdir input
(2)进入input目录,准备创建wc1.txt和wc2.txt两个文本文件。
[hadoop@hadoop1 spark]$ cd input
(3)创建并编辑wc1.txt文件。
[hadoop@hadoop1 input]$ vi wc1.txt
wc1.txt的文件内容如下。
hello world
hello spark
(4)创建并编辑wc2.txt文件。
[hadoop@hadoop1 input]$ vi wc2.txt
wc2.txt的文件内容如下。
hello scala
hello bigdata
(5)提交任务。
启动Spark Shell。Spark Shell是一个基于Scala的命令的运行环境,在其中可以直接编写Scala代码,如图1-15所示。
[hadoop@hadoop1 input]$ spark-shell
图1-15 启动Spark Shell
使用RDD的转换算子和行动算子实现单词统计功能。提交运行并查看运行结果,结果是以数组的形式进行展示,以二元组的形式输出单词的数量,如图1-16所示。
sc.textFile("/opt/module/spark/input").flatMap(_.split(" ")).map((_,1)).reduceByKey (_+_).collect
图1-16 单词统计结果
在完成主要的操作步骤以后,为方便读者理解单词统计任务,下面对RDD的算子进行简要说明。
● textFile:转换算子,参数是文件路径,读取文件夹下面的文本文件并转换为RDD。
● flatMap:转换算子,针对RDD中的每一行文本进行扁平化映射操作,将每行文本按照空格进行分隔,转换为单词形式。
● map:转换算子,进行映射操作,将单词转换为二元组的形式,如将hello转换为(hello,1)的形式。
● reduceByKey:转换算子,以单词作为主键进行聚合操作,简单来说,就是将相同的单词进行数量加和操作,如将(hello,1)和(hello,1)进行聚合操作,转换为(hello,2)。
● collect:结果收集,将结果以数组的形式进行展示。