02. PySpark3程序入口

本文介绍了在服务器环境中安装和配置PySpark3包,如何使用SparkSession创建入口,包括默认配置、指定Master和AppName、自定义配置以及支持Hive操作。同时讲解了SparkContext的创建方法和SparkSession的灵活性,包括设置应用程序名、内存和shuffle操作配置。
摘要由CSDN通过智能技术生成

服务器环境缺失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()

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值