教程目录

  • 0x00 教程内容
  • 0x01 Spark Shell 操作
    • 1. 启动与关闭 Spark Shell
    • 2. 使用 Spark Shell 进行 Scala 编程
  • 0x02 测试词频统计案例
    • 1. 查看 Spark Shell 的启动信息
    • 2. 修改词频统计代码
    • 3. 执行词频统计代码
  • 0x03 Pyspark 初体验
    • 1. 启动与关闭 Pyspark
    • 2. 执行 Pyspark 并查看结果
  • 0xFF 总结

0x00 教程内容

  1. Spark Shell 操作
  2. 测试词频统计案例
  3. 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节点上启动,所以,slave1slave2是没有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()


代码解释:

  1. 创建了一个 RDD file;
  2. count()获取 RDD 的行数;
  3. 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 启动,观察显示的内容:

根据回显信息可知,其实在启动 Spark Shell 的时候,已经给我们实例化出了两个非常关键的对象: SparkContext 对象(sc)、SparkSession对象(spark),此处使用到的是SparkContext 对象,那么教程里的 SparkContext 对象就不用再重新执行了,直接用就可以。

2. 修改词频统计代码
  1. 修改一下教程的代码:
    a、用 sc 替换 sparkContext
    b、textFile 的路径需要换掉成一个存在的文件,如不存在则创建
    c、加上打印到控制台语句:println("wordCountRDD")

我们实际上需要执行的是下面这几句:

val textFileRDD = sc.textFile("/home/hadoop-sny/datas/word.txt")
val wordRDD = textFileRDD.flatMap(line => line.split(" "))
val pairWordRDD = wordRDD.map(word => (word, 1))
val wordCountRDD = pairWordRDD.reduceByKey((a, b) => a + b)
wordCountRDD.foreach(println)

代码解释:

  • 第一行:读取一个 word.txt文件,生成一个叫 textFileRDD 的RDD
  • 第二行: textFileRDD 调用flatMap算子,对每行进行切分操作,切割符是空格,生成内容为 wordRDD
  • 第三行:wordRDD 对切割后的每一个单词进行map映射操作,给每一个单词映射成(word, 1)的形式,生成内容为 pairWordRDD
  • 第四行:pairWordRDD 进行 reduceByKey 操作,根据相同的 key,对 value 进行相加操作,也就是统计操作,返回值是 wordCountRDD
  • 第五行:打印 wordCountRDD 的内容,也就是查看统计结果,foreach 为action算子,如无Action算子,无法执行 Spark 作业。
  1. 创建一个需要统计的新文件
    vi /home/hadoop-sny/datas/word.txt

添加内容:

shao shao shao
nai yi yi nai
hello hello hi


注意:因为我的用户名为 hadoop-sny,所以我的 ~ 表示:/home/hadoop-sny/,用户名不同,则不同,自己需要特别留意此波浪线。

3. 执行词频统计代码

执行结果如下:

其实,可以一步到位,只是不美观:

sc.textFile("/home/hadoop-sny/datas/word.txt").flatMap(line => line.split(" ")).map(word => (word, 1)).reduceByKey((a, b) => a + b).foreach(println)


还可以更简洁点:

sc.textFile("/home/hadoop-sny/datas/word.txt").flatMap(line => line.split(" ")).map(word => (word, 1)).reduceByKey(_ + _).foreach(println)

0x03 Pyspark 初体验

1. 启动与关闭 Pyspark

前面的Spark Shell实际上使用的是Scala交互式Shell,实际上 Spark 也提供了一个用 Python 交互式Shell,即Pyspark。
启动:
pyspark

需要注意的是此处Spark内置的Python是2.7.5版本的,关闭也是按 Ctrl + D 即可。

2. 执行 Pyspark 并查看结果
file = sc.textFile("/home/hadoop-sny/bigdata/spark-2.2.0-bin-hadoop2.7/data/graphx/users.txt")
file.count()
file.first()


后面的教程主要是使用 Spark-Shell ,对于 Pyspark 大家可以自行查找资料学习:官方文档Spark Python API

0xFF 总结

  1. Spark Shell 入门比较简单,方便快捷,不需要开启代码编译器, 一般用于简单的测试或者简单的学习。
  2. 读者最好有 Spark 的相关基础与概念,不然只能操作下来而不知原理,具体可参考本博客其他相关内容。

作者简介:邵奈一
全栈工程师、市场洞察者、专栏编辑
| 公众号 | 微信 | 微博 | CSDN | 简书 |

福利:
邵奈一的技术博客导航
邵奈一 原创不易,如转载请标明出处。


Spark Shell入门教程相关推荐

  1. spark python入门教程_你是如何自学 Python 的?

    我是机械类专业出身,现在在一家NGO组织从事数据分析方面的工作,主要的工具是Python.SQL.Spark.平时会写一些分析用的脚本,偶尔会写写爬虫,跑跑算法,应该说Python算是我吃饭的家伙,很 ...

  2. Fish shell 入门教程

    命令行是程序员的必备技能.图形界面虽然好看,解决问题还是要靠命令行. 命令行由 Shell 提供.各种命令通过 Shell,传递给操作系统的内核.学习命令行就是在学习 Shell. Shell 有好几 ...

  3. Spark 学习入门教程

    转载请注明作者,谢谢支持! 一.环境准备 测试环境使用的cdh提供的quickstart vm hadoop版本:2.5.0-cdh5.2.0 spark版本:1.1.0 二.Hello Spark ...

  4. 大数据spark开发入门教程

    大数据是互联网发展的方向,大数据人才是未来的高薪贵族.随着大数据人才的供不应求,大数据人才的薪资待遇也在不断提升.如果你也想进入大数据行业,也想学习大数据技术,大数据讲师认为,可以先从spark技术开 ...

  5. Shell入门教程[1]

    Shell 环境 第一个shell脚本: 运行 Shell 脚本有两种方法: Shell 变量 定义变量 使用变量 只读变量 删除变量 变量类型 Shell 字符串 单引号 双引号 拼接字符串 获取字 ...

  6. Shell入门教程:算术运算

    Bash的算术运算有以下几种方法: 序号 名称 语法 范例 1 算术扩展 $((算术式)) r=$((2+5*8)) 2 使用外部程序 expr 算术式 r=`expr 4 + 5` 3 使用 $[] ...

  7. Shell入门教程:Shell函数详解

    Shell函数类似于Shell脚本,里面存放了一系列的指令,不过Shell的函数存在于内存,而不是硬盘文件,所以速度很快,另外,Shell还能对函数进行预处理,所以函数的启动比脚本更快. 1.函数定义 ...

  8. Shell入门教程:命令替换 $() 和 ``

    所谓命令替换,是把命令执行后的标准输出放入变量中.这是一个十分有威力的功能.例如说, 想查看工作目录中所有的文件名,可执行ls命令,但如何把这些文件名存入变量中,供往后的程序代码再利用呢? 使用命令替 ...

  9. fish shell 简要教程以及对bash的兼容性讨论。

    本文的亮点在于两点:1. 提出了一种fish与bash兼容性的临时方案,2. 自己新建了一个属于自己的fish主题. fish的官网宣传语是 Finally, a command line shell ...

最新文章

  1. PPT文字怎样规划 哪里可以代做PPT
  2. java数组遍历赋值,最终入职阿里
  3. 网络原理往期考试题+部分详解+最终版
  4. Struts2请求处理的内部流程说明(版本二)
  5. Python把函数作为参数传入的高阶编程方法
  6. 如何基于对话框的project基于改变BCG的
  7. 技术文章系列汇总(持续更新中)并附博客上树状列表源代码
  8. 大数据毕设/课设 - 基于大数据的客流量数据可视化平台
  9. 《LDA数学八卦》读后笔记
  10. 早年的一篇关于80286保护模式的文章
  11. SVN commit时,提示“remains in conflict”错误:
  12. Boost.auto_ptr的实现源码
  13. 知识图谱 语义网络,语义网,链接数据和知识图谱 (二)--基础篇
  14. centos8 安装kvm
  15. 烟台大学计算机学院王文学,杨玉军-烟台大学 数学与信息科学学院
  16. 呀,葵花宝典![IT项目经理成长晋升记2]
  17. CSDN博客写作编辑器如何使用?
  18. Streamsets相关资料汇总
  19. 十三届蓝桥杯基础知识大全
  20. axios 超级小白使用模板

热门文章

  1. 各部件作用计算机,计算机组成原理。1.2.2计算机五大组成部件功能介绍
  2. Kaldi 报错:** split_data.sh: warning, #lines is (utt2spk,feats.scp) is (502,500); you can ** use uti
  3. 解决android模拟器上不了网的问题
  4. samtools 使用说明
  5. 机电继电器行业调研报告 - 市场现状分析与发展前景预测(2021-2027年)
  6. Linux安装最新版Docker完整教程(建议收藏)
  7. 夺命雷公狗之后台登录一条龙模版
  8. RPP 1.86 gamma 开源发布
  9. 解释微信小程序const app=getApp()的作用
  10. vscode主题颜色 - 设置篇