前言
在向集群提交任务时,通常会遇到内存不足、hive表中文乱码等情况,需要在 submit
时配置可选参数来解决相应的问题。本文对部分可选参数做一个小结。
常用可选参数
参考:
Spark官方文档-Submitting Applications
spark-submit
脚本位于Spark的bin目录中,用于在集群上启动applications。对于Python,可以使用spark-submit 的 --py-files
参数来添加.py、.zip或.egg文件与应用程序一起分发到集群中。也可以直接将 .py 文件直接通过spark-submit提交:
spark-submit --master yarn job868530.py
spark-submit 常用的可选参数如下:
-- class
: application的入口点;--master
: 集群的master URL,(形式为spark://23.195.26.187:7077), 也可以传递yarn, 根据--deploy-mode
的值,以客户端或集群模式连接到YARN集群。 集群位置将根据 HADOOP_CONF_DIR 或 YARN_CONF_DIR 变量找到。--deploy-mode
: 将driver部署在worker nodes(cluster)还是在本地作为外部clent(client),默认为client.--conf
: "key=value"格式的任意 Spark 配置属性. 多个配置需作为单独的参数传递.(例如--conf <key>=<value> --conf <key2>=<value2>
),如:--conf spark.pyspark.driver.python=/usr/bin/python3.6
--conf spark.pyspark.python=/usr/bin/python3.6
--driver-memory
: Driver内存,默认为1g,这通常会导致内存不足的错误;--executor-memory
: 每个 executor 的内存,默认是1G;--num-executors
: 启动的 executor 数量。默认为2。在 yarn 下使用;--executor-core
: 每个 executor 的核数。在yarn或者standalone下使用;
例子
这个例子可以解决内存不足、hive表中文乱码问题。
COMMON_SETTING="--master yarn --deploy-mode client --driver-memory 32g --executor-memory 32g \
--conf spark.pyspark.driver.python=/usr/bin/python3.6 \
--conf spark.pyspark.python=/usr/bin/python3.6"
cur_date=${zdt.format("yyyy-MM-dd")}
/opt/app/spark/bin/spark-submit $COMMON_SETTING job_899769.py ${cur_date}