spark-sql提交参数详解整理

#1. spark任务提交
当SPARK-SQL开发完成后需要将其提交到大数据平台上去跑,提交的时候需要对要使用的资源参数进行设置,目的:
a. 让任务在正确的环境下运行
b. 根据任务自身情况,设置合理参数,提高运行效率

#2. 设置参数说明
##2.1 class参数
参数说明:spark程序的主类,仅针对 java 或 scala 应用,注意用 全包名+类名

##2.2 name参数
参数说明:应用程序的名称,可以在yarn上面查询定位对应的运行程序

##2.3 master参数
参数说明:与deploy-mode合起来表明程序提交到哪个资源管理框架,以何种方式部署。表示要连接的集群管理器,可以是:
spark://host:port
mesos://host:port
yarn
yarn-cluster
yarn-client
local
其中local和local[K].这种是本地run的模式,不会提交到YARN,便于测试使用。这两者之间的区别,带K是多K个线程,不带K的是单个线程。如果是*的话就是尽可能多的线程数。

##2.4 deploy-mode参数
参数说明:在本地 (client) 启动 driver 或在 cluster 上启动,默认是client。
client是指driver在提交任务的服务器上执行,cluster是driver和exectutor都在集群内执行

##2.5 executor-memory参数
参数说明:每个执行器(executor)的内存 ,以字节为单位。可以使用后缀指定更大的单位,比如“512m”(512MB),或“15g”(15GB)。默认是1G,最大不超过30G,yarn模式下其内存加上container要使用的内存(默认值是1G)不要超过NM可用内存,不然分配不到container来运行executor

##2.6 executor-cores参数
参数说明:每个执行器(executor)的核数 ,即单个executor能并发执行task数,根据job设置。在yarn或者standalone下使用。Spark on Yarn 默认为 1,推荐值2-16;standalone 默认为 worker 上所有可用的 core

##2.7 Executor-memoryOverheadM参数
参数说明:设置执行器的堆外内存 ,具体的设置方法可以看之后的spark调优方法.执行器的内存=executor-memory+Executor-overheadMemory

##2.8 driver-memory参数
参数说明:驱动器(Driver)进程使用的内存量 (例如:1000M,5G)。以字节为单位。可以使用后缀指定更大的单位,比如“512m”(512MB),或“15g”(15GB)。默认是1G,推荐值2-6G,不宜太大

##2.9 driver-cores参数
参数说明:驱动器(Driver)的核数 ,默认是1。在 yarn 或者 standalone 下使用

##2.10 packages参数
参数说明:包含在driver 和executor 的 classpath 中的 jar 的 maven 坐标

##2.11 exclude-packages参数
参数说明:为了避免冲突 而指定不包含的 package

##2.12 repositories参数
参数说明:远程 repository

##2.13 conf参数
参数说明:PROP=VALUE 指定 spark 配置属性的值,
例如:
–conf spark.executor.extraJavaOptions=“-XX:MaxPermSize=256m”

##2.14 properties-file参数
参数说明:加载的配置文件,默认为 conf/spark-defaults.conf

##2.15 driver-java-options参数
参数说明:传给 driver 的额外的 Java 选项

##2.16 driver-library-path参数
参数说明:传给 driver 的额外的库路径

##2.17 driver-class-path参数
参数说明:传给 driver 的额外的类路径

##2.18 total-executor-cores参数
参数说明:所有 executor 总共的核数。仅仅在 mesos 或者 standalone 下使用

##2.19 driver-memoryOverheadM参数
参数说明:设置driver的堆外内存 ,具体的设置方法可以看之后的spark提交参数详解。driver的内存=driver-memory+driver-overheadMemory

##2.20 num-executors参数
参数说明:设置执行器(executor)的数量;默认为2。在 yarn 下使用。但是目前CDH和FusionInsight都支持动态分配(dynamic allocat)模式。在这种模式下,无论怎么设置num-executors其实都会被忽略的

##2.21 queue参数
参数说明:执行队列池;通常生产环境都会为特定的租户分配资源池。这个参数便是用于指定跑批租户资源池名称的。

##2.22 Jars参数
参数说明:用逗号分隔的本地 jar 包,指定本次程序(Driver 和 executor)依赖的jar包。需要上传并放到应用的CLASSPATH中的JAR包的列表。如果应用依赖于少量第三方JAR包,可以把他们放在这个参数里,有两种方式:
a. 把依赖包打入执行程序包,这样会造成包体较大,每次打包上传耗时间表达;
b. 不打入依赖包,把依赖包提前传到服务器,再通过jars指令指出依赖包的文件路径

#3. 设置示例
spark-submit
–name “任务名称” \ //应用程序的名称,可以在yarn上面查询定位
–class 应用程序主类名 \ //应用程序的主类,仅针对 java 或 scala 应用
–master yarn \ //与deploy-mode合起来表明程序提交到哪个资源管理框架,以何种方式部署,提交任务到哪里执行,例如 spark://host:port,yarn,local
–deploy-mode cluster \ //在本地(client)启动driver或在cluster上启动,默认是client
–driver-memory 8g \ //Driver内存,默认 1G
–executor-memory 6g \ //每个 executor 的内存,默认是1G
–executor-cores 4 \ //每个 executor 的核数。在yarn或者standalone下使用
–num-executors 60 \ //启动的 executor 数量。默认为2。在 yarn 下使用
–queue root.users.bzbd_batch \ //执行队列池;通常生产环境都会为特定的租户分配资源池。这个参数便是用于指定跑批租户资源池名称的
–conf spark.hadoop.hive.exec.dynamic.partition=true \ // 是否允许动态生成分区
–conf spark.hadoop.hive.exec.dynamic.partition.mode=nonstrict \ //是否容忍指定分区全部动态生成
–conf spark.hadoop.hive.exec.max.dynamic.partitions=100000 \ //动态生成的最多分区数
–conf spark.hadoop.hive.exec.max.dynamic.partitions.pernode=100000 \ //每个节点动态生成的最多分区数
–conf spark.sql.adaptive.enabled=true \ //是否开启调整partition功能,如果开启,spark.sql.shuffle.partitions设置的partition可能会被合并到一个reducer里运行。平台默认开启,同时强烈建议开启。理由:更好利用单个executor的性能,还能缓解小文件问题
–conf spark.sql.adaptive.shuffle.targetPostShuffleInputSize=100M \ //和spark.sql.adaptive.enabled配合使用,当开启调整partition功能后,当mapper端两个partition的数据合并后数据量小于targetPostShuffleInputSize时,Spark会将两个partition进行合并到一个reducer端进行处理。平台默认为67108864(64M),用户可根据自身作业的情况酌情调整该值。当调大该值时,一个reduce端task处理的数据量变大,最终产出的数据,存到HDFS上的文件也变大
–conf spark.sql.adaptive.maxNumPostShufflePartitions=10000 \ //当spark.sql.adaptive.enabled参数开启后,有时会导致很多分区被合并,为了防止分区过大,可以设置此参数,减少产生的文件数,增大单个文件大小

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Spark SQL 是 Apache Spark 中的一个模块,它允许使用 SQL 查询语言进行结构化数据处理。下面是 Spark SQL 项目实操详解及答案: 1. 项目准备 在使用 Spark SQL 之前,需要准备一些数据,可以是本地文件、HDFS 上的文件或者是数据库中的数据。可以使用以下命令加载本地文件: ``` val data = spark.read.csv("path/to/local/file") ``` 2. 创建 SparkSession SparkSession 是 Spark SQL 中的入口点,需要使用它来创建 DataFrame 和执行 SQL 查询。可以使用以下命令创建 SparkSession: ``` val spark = SparkSession.builder() .appName("Spark SQL Example") .config("spark.some.config.option", "some-value") .getOrCreate() ``` 3. 创建 DataFrame DataFrame 是 Spark SQL 中的一种数据结构,类似于关系型数据库中的表。可以使用以下命令创建 DataFrame: ``` val df = spark.read.format("csv") .option("header", "true") .option("inferSchema", "true") .load("path/to/local/file") ``` 4. 执行 SQL 查询 可以使用以下命令执行 SQL 查询: ``` df.createOrReplaceTempView("people") val result = spark.sql("SELECT name, age FROM people WHERE age > 18") result.show() ``` 5. 保存结果 可以使用以下命令将结果保存到本地文件或者存储到数据库中: ``` result.write.format("csv").save("path/to/result/file") result.write.format("jdbc") .option("url", "jdbc:mysql://localhost/test") .option("dbtable", "result") .option("user", "root") .option("password", "password") .save() ``` 以上就是 Spark SQL 项目实操的详解及答案。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

海阔天空_81

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值