第 2 章 Spark 下载与入门
2.1 下载Spark
略
2.2 Spark中Python和Scala的shell
略
2.3 Spark核心概念简介
以Python 版的例子介绍saprk核心概念
例 2-1:Python 行数统计
# 1、驱动器程序:交互式运行spark,Spark shell 本身就是驱动器程序
# 2、SparkContext
对象:sc,sc.textFile()创建一个RDD——lines
>>> lines = sc.textFile("README.md") # 创建一个名为lines的RDD >>> lines.count() # 统计RDD中的元素个数 127 >>> lines.first() # 这个RDD中的第一个元素,也就是README.md的第一行 u'# Apache Spark'
例 2-4:Python 版本筛选的例子
>>> lines = sc.textFile("README.md")
>>> pythonLines = lines.filter(lambda line: "Python" in line)
>>> pythonLines.first()
u'## Interactive Python Shell'
1、驱动器程序
作用:
(1)每个 Spark 应用都由一个驱动器程序(driver program)来发起集群上的各种并行操作
(2)驱动器程序包含应用的 main
函数,并且定义了集群上的分布式数据集,还对这些分布式数据集应用了相关操作
(3)在交互运行中(Spark shell中运行),实际的驱动器程序就是 Spark shell 本身,你只需要输入想要运行的操作
(4)在独立程序中使用时:???? bin/spark-submit
脚本来运行
2、SparkContext
对象
作用:
(1)驱动器程序通过一个 SparkContext
对象来访问 Spark。这个对象代表对计算集群的一个连接。
(2)在交互运行中(Spark shell中运行),shell 启动时已经自动创建了一个 SparkContext
对象,是一个叫作 sc
的变量。
(3)在独立程序中使用时:需要自行初始化SparkContext
(4)SparkContext可以用来创建RDD
3、执行器节点
多个执行器节点组成集群,驱动器程序将数据集操作分发到各个执行器节点中进行(通过spark API)
4、spark API
作用:可以将操作运行在集群上
好处:可以在单一的驱动器程序中编程,并且让代码自动运行在多个节点上
2.4 独立应用
运行spark的2种方式:
(1)交互式运行(spark shell中运行)
(2)在 Java、Scala 或 Python 的独立程序中被连接使用:需要自行初始化SparkContext
1、连接spark
连接 Spark 的过程在各语言中并不一样。在 Python 中,你可以把应用写成 Python 脚本,但是需要使用 Spark 自带的 bin/spark-submit
脚本来运行。spark-submit
脚本会帮我们引入 Python 程序的 Spark 依赖。这个脚本为 Spark 的 PythonAPI 配置好了运行环境。
# 例 2-6:运行 Python 脚本 连接spark bin/spark-submit my_script.py
2、初始化SparkContext
一旦完成了应用与 Spark 的连接,接下来就需要在你的程序中导入 Spark 包并且创建 SparkContext。你可以通过先创建一个 SparkConf
对象来配置你的应用,然后基于这个 SparkConf 创建一个 SparkContext 对象。在例 2-7 至例 2-9 中,我们用各种语言分别示范了这一过程。
# 例 2-7:在 Python 中初始化 Spark from pyspark import SparkConf, SparkContext conf = SparkConf().setMaster("local").setAppName("My App") sc = SparkContext(conf = conf)
这些例子展示了创建 SparkContext 的最基本的方法,你只需传递两个参数:
-
集群 URL:告诉 Spark 如何连接到集群上。在这几个例子中我们使用的是
local
,这个特殊值可以让 Spark 运行在单机单线程上而无需连接到集群。 -
应用名:在例子中我们使用的是
My App
。当连接到一个集群时,这个值可以帮助你在集群管理器的用户界面中找到你的应用。
还有很多附加参数可以用来配置应用的运行方式或添加要发送到集群上的代码。我们会在本书的后续章节中介绍。
在初始化 SparkContext 之后,你可以使用我们前面展示的所有方法(比如利用文本文件)来创建 RDD 并操控它们。
最后,关闭 Spark 可以调用 SparkContext 的 stop()
方法,或者直接退出应用(比如通过 System.exit(0)
或者 sys.exit()
)。
3、构建独立应用
(1)构建:
(2)打包:
(3)一旦敲定了构建方式,我们就可以轻松打包并且使用 bin/spark-submit
脚本执行我们的应用了。spark-submit
脚本可以为我们配置 Spark 所要用到的一系列环境变量。在 mini-complete-example 目录中,我们可以使用 Scala(例 2-14)或者 Java(例 2-15)进行构建。第 7 章中也会更详细地讲解如何打包 Spark 应用。【对应第7章】