每个spark
应用都由一个驱动器程序(driver program
)来发起集群上的各种并行操作
driver program
包含了应用的main
函数,并且定义了集群上的分布式数据集,还对这些分布式数据集应用了相关操作driver program
通过一个SparkContext
对象来访问spark
driver program
一般要管理多个执行器(executor
) 节点SparkContext
:该对象代表了对计算集群的一个连接
pyspark shell
中,当shell
启动时,已经自动创建了一个SparkContext
对象,它叫做sc
。RDD
安装步骤:
http://spark.apache.org/downloads.html
下载Pre-built Apache Hadoop xx and later
的版本在pycharm
中使用pyspark
:
File->Settings->Project->Project Structure
,选择右侧的Add Content Root
。
添加spark
目录下的python
目录
注意,如果pycharm
使用了python3
,则需要在脚本中添加语句:
import os
os.environ["PYSPARK_PYTHON"]="python3"
spark
带有交互式的 shell
,可以用于即时数据分析
spark shell
可以与分布式存储在许多机器的内存或者硬盘上的数据进行交互,处理过程由spark
自动控制pyspark shell
是 spark shell
的python
版本使用pyspark shell
:进入spark
的安装目录,然后执行bin/pyspark
。
ubuntu16.04
中默认使用python2.7
如果需要使用python3
,则使用export PYSPARK_PYTHON=python3
来导出环境变量
os.environ["PYSPARK_PYTHON"]="python3"
退出pyspark shell
:CTRL+D
修改pyspark
日志:在conf
目录下创建一个log4j.proerties
的文件。
log4j.properties.template
,将log4j.rootCategory=INFO,console
修改为log4j.rootCategory=WARN,console
独立应用与pyspark shell
的主要区别在于:你需要自行初始化SparkContext
,除此之外二者使用的API
完全相同。
在python
中,你需要把独立应用写成python
脚本,然后使用Spark
自带的bin/spark-submit
脚本来运行:
xxxxxxxxxx
bin/spark-submit my_script.py
spark-submit
会帮助我们引入python
程序的spark
依赖
在独立应用中,通常使用下面方法初始化SparkContext
:
xxxxxxxxxx
from pyspark import SparkConf, SparkContext
conf = SparkConf().setMaster('local').setAppName('My App')
sc = SparkContext(conf = conf)
首先创建一个SparkConf
对象来配置应用,然后基于该SparkConf
来创建一个SparkContext
对象。
.setMaster()
给出了集群的URL
,告诉spark
如何连接到集群上。这里'local'
表示让spark
运行在单机单线程上。.setAppName()
给出了应用的名字。当连接到一个集群上时,这个值可以帮助你在集群管理器的用户界面上找到你的应用。关闭spark
可以调用SparkContext
的 .stop()
方法,或者直接退出应用(如调用System.exit(0)
或者sys.exit()
)
如果需要使用python3
,则使用export PYSPARK_PYTHON=python3
来导出环境变量。
os.environ["PYSPARK_PYTHON"]="python3"