5. spark 参数问题

官网地址:spark 参数

在代码中设置参数

spark-default.conf < 命令行< 代码内部设置参数, 对于一常用的参数可以放在配置文件,对于一些个性化参数则通过 命令行传递比较好。

命令行

命令行传递参数,有一些快捷方式,比如 --driver-memory 类似的参数, 其实这只是对特别常用的参数做了额外的精简化, 除此之外还有另一种最底层的传递方式那就是 --conf k=v

Spark Properties

Spark Properties 控制大多数应用程序设置,并可为每个应用程序单独配置。支持的参数可以在本文最上方的连接处找到

java 复制代码
val conf = new SparkConf()
             .setMaster("local[2]")
             .setAppName("CountingSheep")
            .set("任意支持的key","value")
val sc = new SparkContext(conf)

动态加载参数

动态加载参数,意思就是通过命令行动态的为程序设置运行参数,这也是最为灵活的一种。也是开发中最常见的,一般需要以下两个步骤。

  1. 代码中要有
    val sc = new SparkContext(new SparkConf())
    val sc = new SparkContext(conf)
    这样命令行传递的参数会被sparkConf 对象接收,自动设置。
  2. 命令行传递参数
    命令行传递有两种写法,一种是快捷方式,通过spark-submit --help 可以查到支持的快捷方式,比如spark-submit --name test, 这就将我们的程序名称设置为了test, 除此之外就是用--conf k=v 这种方式支持所有的底层参数, 比如上面的写法可以改成:
    spark-submit --conf spark.app.name=test 这两种写法是等效的。所有的快捷方式都有对应的底层方式
    再举几个例子:
    --conf spark.executor.memory=2g
    --conf spark.driver.memory=2g
    等同于
    --driver-memory 4g
    --executor-memory 2g
    文章开始的连链接就是官网支持的所有底层参数, 感兴趣的可以查看。
    下面是我常用的命令仅供参考:
java 复制代码
spark-submit 
--master yarn
-deploy-mode cluster 
--class com.boke.entry.Main 
--conf spark.shuffle.service.enabled=true   #开启shuffer
--conf spark.dynamicAllocation.enabled=False #是否开启动态资源分配
--conf spark.dynamicAllocation.minExecutors=1 #最小分配数量
--conf spark.dynamicAllocation.maxExecutors=4 #最大分配数量
--conf spark.dynamicAllocation.executorIdleTimeout=60s #超时检测
--conf spark.dynamicAllocation.initialExecutors=3 #初始化分配数量
--conf spark.driver.memory=2g #等同于--driver-memory
--conf spark.executor.memory=2g # 等同于--executor-memory
--conf spark.executor.instances=4# 等同于--num-executors
--conf spark.app.name=SparkTest # 等同于 --name SparkTest
--conf spark.yarn.jars=hdfs://xxx:9000/yarn-jars/*.jar 
/usr/local/alg/graph-algorithm-1.0-SNAPSHOT.jar 

重点说下 spark.yarn.jars 这个参数的意思是放弃读取spark安装目录下的.../jars/目录,转而读取hadoop的目录,要求将

spark安装目录中的.../jars/下的所有jar包上传到指定的hdfs目录,此目录也可以放别的依赖jar

比如jdbc的包,或者任何你代码中用到的第三方的jar,好处是jar容易管理, 打包的时候不需要将第三方的依赖jar打进去, 只需要源码包即可,

注意我的集群用的是9000端口,你可能用的是8020。

请在hdfs-site.xml 找到:

java 复制代码
   <property>
        <name>dfs.namenode.rpc-address.hdfs-cluster.nn1</name>
        <value>xxx:9000</value>
    </property>

目前大多数的集群都是8020端口

相关推荐
鸿乃江边鸟6 小时前
Spark Datafusion Comet 向量化Rust Native--CometShuffleExchangeExec怎么控制读写
大数据·rust·spark·native
伟大的大威1 天前
NVIDIA DGX Spark (ARM64/Blackwell) Kubernetes 集群 + GPU Operator 完整部署指南
大数据·spark·kubernetes
小邓睡不饱耶1 天前
深度实战:Spark GraphX构建用户信任网络,精准锁定高价值目标用户(含完整案例)
大数据·spark·php
B站计算机毕业设计超人1 天前
计算机毕业设计hadoop+spark+hive共享单车预测系统 共享单车数据可视化分析 大数据毕业设计(源码+LW文档+PPT+讲解)
大数据·hadoop·python·深度学习·spark·毕业设计·课程设计
B站计算机毕业设计超人1 天前
计算机毕业设计Python+Spark+Hadoop+Hive微博舆情分析 微博情感分析可视化 大数据毕业设计(源码+LW文档+PPT+讲解)
大数据·hadoop·爬虫·python·spark·cnn·课程设计
yumgpkpm1 天前
华为昇腾300T A2训练、微调Qwen过程,带保姆式命令,麒麟操作系统+鲲鹏CPU
hive·hadoop·华为·flink·spark·kafka·hbase
TTBIGDATA1 天前
【Hue】Ambari开启 Kerberos 后,Hue 使用 Spark SQL出现凭证不统一问题处理
大数据·sql·spark·ambari·kerberos·hue·bigtop
鸿乃江边鸟2 天前
Spark Datafusion Comet 向量化Rust Native--Native算子(CometNativeExec)怎么串联执行
大数据·rust·spark·native
Light602 天前
数智孪生,金流·物流全透视:构建某银行制造业贷后风控新范式—— 基于领码 SPARK 融合平台的技术解决方案
大数据·spark·数字孪生·实时监控·物联网金融·供应链风控·ai决策
小邓睡不饱耶2 天前
基于Spark GraphX构建用户信任网络:精准定位高价值目标用户
大数据·spark·php