我们已经在CentOS7中安装了spark,本节将展示如何在spark中通过scala方式交互的进行词频统计。
1 系统、软件以及前提约束
- CentOS 7 64 工作站 作者的机子ip是192.168.100.200,主机名为danji,请读者根据自己实际情况设置
- hadoop已经安装完毕并启动
https://www.jianshu.com/p/b7ae3b51e559 - spark已经安装完毕并启动
https://www.jianshu.com/p/8384ab76e8d4 - 为去除权限对操作的影响,所有操作都以root进行
2 操作
- 1.使用xshell以root登录到192.168.100.200
- 2.新建一个文件,输入一些字符串,上传到HDFS
# 进入hadoop的bin目录
cd /root/hadoop-2.5.2/bin
# 编辑word,加入以下内容,保存退出
I am zhangli
I am xiaoli
who are you
I am ali
hello jiangsu wanhe
wanhe
# 上传word到HDFS
./hdfs dfs -put word /word
# 查看
./hdfs dfs -cat /word
- 3.进入到spark命令行
# 进入spark的命令目录
cd /root/spark-2.2.1-bin-hadoop2.7/bin
# 进入spark命令行
./spark-shell
- 4.在spark命令行交互执行以下命令
#创建一个上下文环境,以HDFS的/word作为输入
scala > val textFile = sc.textFile("/word")
#统计/word共有多少行
scala > textFile.count()
#打印/word内容
scala > textFile.collect().foreach(println)
#过滤哪些行包含"I"
scala > val linesWithSpark = textFile.filter(line => line.contains("I"))
#包含"I"总共有多少行
scala > linesWithSpark.count()
#统计单词频率
scala > val wordCounts = textFile.flatMap(line => line.split(" ")).map(word => (word, 1)).reduceByKey((a, b) => a + b)
#打印统计结果
scala > wordCounts.collect()
以上,就是在spark当中通过scala的交互方式进行词频统计。