每个spark 应用都由一个驱动器程序(driver program)来发起集群上的各种并行操作
driver program 包含了应用的main 函数,并且定义了集群上的分布式数据集,还对这些分布式数据集应用了相关操作driver program 通过一个SparkContext 对象来访问sparkdriver 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 osos.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 脚本来运行:
xxxxxxxxxxbin/spark-submit my_script.pyspark-submit 会帮助我们引入python程序的spark 依赖
在独立应用中,通常使用下面方法初始化SparkContext:
xxxxxxxxxxfrom pyspark import SparkConf, SparkContextconf = 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"