0x00 教程内容
- Spark Shell 操作
- 测试词频统计案例
- Pyspark 初体验
学习前提:有一定的Scala基础、基本的 Linux 基础,对Spark有一定的概念,并且安装好了Spark环境。
相关环境参考教程:
1、分布式集群环境之Scala的安装与配置(Centos7)
2、分布式集群环境之Spark的安装与配置(Centos7)
0x01 Spark Shell 操作
1. 启动与关闭 Spark Shell
a. 启动 Spark Shell
Spark-Shell是 Spark 自带的一个 Scala 交互式操作 Shell ,类似于 Python 或者其他脚本语言的 Shell ,其可以以脚本方式进行交互式执行。安装好Spark之后,在任意非bin路径,直接在Linux命令行中输入:
spark-shell
即可进入 Spark Shell 界面:
b. 关闭 Spark Shell
按 Ctrl + D 即可退出。
启动Spark Shell之后,可以打开一个新的终端,然后输入jps
,查看目前有哪些Java进程,可以看到:
注意:此处只在master节点上启动,所以,slave1、slave2是没有SparkSubmit进程的。
2. 使用 Spark Shell 进行 Scala 编程
a. 读取Spark内置数据
数据位置:$SPARK_HOME/data/graphx/users.txt,
如我的位置是(需替换成自己实际的路径):/home/hadoop-sny/bigdata/spark-2.2.0-bin-hadoop2.7/data/graphx/users.txt
查看内容:
也可以自己创建文件:
1,BarackObama,Barack Obama 2,ladygaga,Goddess of Love 3,jeresig,John Resig 4,justinbieber,Justin Bieber 6,matei_zaharia,Matei Zaharia 7,odersky,Martin Odersky 8,anonsys
我们来统计一下users.txt
文件一共有多少行,并且打印第一行内容,进入Spark Shell界面,输入内容:
var file = sc.textFile("/home/hadoop-sny/bigdata/spark-2.2.0-bin-hadoop2.7/data/graphx/users.txt") file.count() file.first()
代码解释:
- 创建了一个 RDD file;
count()
获取 RDD 的行数;first()
获取第一行的内容。
当然,我们还可以继续执行其他操作,
比如查找有多少行含有"Obama":
file.filter(line => line.contains("Obama")).count()
具体的函数、算子,就需要自己有一定的基础的,但是你可以先了解。
此代码的意思就是file的RDD调用一个过滤算子 filter
,过滤条件是判断有Obama
,如果有,则保留下来,保留下来之后再进行 count 计算行数操作,最后统计结果为 1。
0x02 测试词频统计案例
1. 查看 Spark Shell 的启动信息
此案例来源于教程:IntelliJ IDEA开发Spark案例之WordCount 里0x02 编写WordCount代码
的完整代码,如下为教程截图:
为了方便大家理解,此处重新启动 Spark Shell
,如已启动,则按 Ctrl + D 即可退出,然后输入 spark-shell
启动,观察显示的内容: