PySpark3程序入口
服务器环境缺失pyspark包依赖
conda activate pyspark 激活pyspark python环境
conda list 检查是否有pyspark包
若 没有则安装 (-i 表示临时使用国内源)
pip install pyspark -i https://pypi.tuna.tsinghua.edu.cn/simple
创建入口
sparkContext方式
这种方法针对的是rdd模块使用,了解即可;课程中主要使用spark2的主入口sparkSession
# 创建SparkConf
conf = SparkConf().setMaster("spark://hadoop001:7077") \
.setAppName("hello word!")
# conf = SparkConf().setMaster("local[*]").setAppName("hello word!")
# conf = SparkConf().setMaster("local[2]").setAppName("hello word!")
# conf = SparkConf().setMaster("local").setAppName("hello word!")
# 创建SparkContext
sc = SparkContext(conf=conf)
## 业务逻辑
## 停止SparkContext 释放资源
sc.stop
SparkSession 入口
在RDD阶段,程序的执行入口对象是:SparkContext。
在Spark2.0后,推出了SparkSession对象,作为Spark编码的统一入口对象。SparkSession对象可以:
- 用于SparkSQL编程作为入口对象;
- 用于SparkCore编程,可以通过SparkSession对象中获取到SparkContext。
我们后续的代码,执行环境入口对象,统一为SparkSession对象。
使用默认配置创建SparkSession:
spark = SparkSession.builder.appName("spark application").getOrCreate()
##可从SparkSession内获取sparkContext 从而进行rdd操作
sc = spark.sparkContext
# spark = SparkSession.builder \
# .appName("这是一个示例") \
# .getOrCreate()
###业务代码
##停止 sparkContext 释放资源
sc.stop()
##停止SparkSession释放资源
spark.stop()
指定Master和AppName创建SparkSession
spark = SparkSession.builder \
.appName("SparkDemo") \
.master("local[*]") \
.getOrCreate()
###业务代码
##停止SparkSession释放资源
spark.stop()
添加自定义配置项创建SparkSession
spark = SparkSession.builder \
.appName("SparkDemo") \
.config("spark.driver.allowMultipleContexts", "true") \
.getOrCreate()
###业务代码
##停止SparkSession释放资源
spark.stop()
指定Spark集群的连接信息创建SparkSession
spark = SparkSession.builder \
.appName("SparkDemo") \
.config("spark.master", "spark://hadoop001:7077") \ //设置master
.getOrCreate()
# .config("spark.master", "spark://192.168.112.110:7077") \
###业务代码
##停止SparkSession释放资源
spark.stop()
允许操作hive
spark = SparkSession.builder \
.appName("SparkDemo") \
.master("local") \
.enableHiveSupport() \ ###支持hive
.getOrCreate()
###业务代码
##停止SparkSession释放资源
spark.stop()
灵活配置
conf = SparkConf()
#设置应用程序的名称
conf.set("spark.app.name", "MySparkApp")
#设置运行模式为本地模式
conf.set("spark.master", "local")
#设置每个Executor的内存大小为2GB
conf.set("spark.executor.memory", "2g")
spark = SparkSession.builder.config(conf =conf).getOrCreate()
###存在SparkSession对象后再设置参数的方法
# 设置Shuffle操作的并行度为10
spark.conf.set("spark.sql.shuffle.partitions", "10")
# 设置自动广播连接的阈值为10MB
spark.conf.set("spark.sql.autoBroadcastJoinThreshold", "10485760")
##业务代码
##停止SparkSession释放资源
spark.stop()