在进行pyspark开发时,需要先安装hadoop、spark的环境,或者只安装spark环境即可。配置集群or单机环境都可以,在配置好环境后,不需要单独启动hadoop/spark,直接运行pyspark程序即可。
一个脚手架
'''
在win环境下,若出现了:
py4j.protocol.Py4JError: org.apache.spark.api.python.PythonUtils.getEncryptionEnabled does not exist in the JVM
则需要用到findspark插件。
'''
import findspark
findspark.init()
from pyspark.sql import SparkSession
# SparkContext是spark功能的入口,SparkContext使用Py4J启动 JVM 并创建 JavaSparkContext
# 当我们运行任何Spark应用程序时,启动一个驱动程序,它具有main函数,并在此处启动SparkContext。然后,驱动程序在工作节点上的执行程序内运行操作。
from pyspark import SparkContext
# 默认情况下,PySpark将SparkContext作为 'sc'提供 ,因此创建新的SparkContext将不起作用
# sc.stop()当在程序中sc被多次创建的时候,程序会报错;可以使用sc.stop()来中断已经创建的sc
sc = SparkContext("xxx","xxx")
spark = SparkSession.builder.master('xxx').appName("xxx").getOrCreate()
class pyspark.SparkContext (
master = None, #它是连接到的集群的URL
appName = None, #您的工作名称
sparkHome = None, #Spark安装目录
pyFiles = None, #要发送到集群并添加到PYTHONPATH的.zip或.py文件
environment = None, #工作节点环境变量
batchSize = 0, #表示为单个Java对象的Python对象的数量。 设置1以禁用批处理,设置0以根据对象大小自动选择批处理大小,或设置为-1以使用无限批处理大小
serializer = PickleSerializer(), #RDD序列化器
conf = None, # L {SparkConf}的一个对象,用于设置所有Spark属性
gateway = None, #使用现有网关和JVM,否则初始化新JVM
jsc = None, #JavaSparkContext实例
# 用于进行性能分析的一类自定义Profiler(默认为pyspark.profiler.BasicProfiler)。在上述参数中,主要使用 master 和 appname
profiler_cls = <class 'pyspark.profiler.BasicProfiler'>
)
参考:
在Spark2之后,DataFrame和DataSet进行了API融合,SparkContext也就融合进SparkSession中。因此在2.0版本之后,SparkSession就成为了Spark程序的主入口。
关于SparkSession的使用可以参考以下博客: