Azure Databricks:工作区级别添加Spark配置方法及全局初始化脚本示例
在Azure Databricks工作区级别全局配置Spark参数并同步到所有集群
方法一:使用全局初始化脚本
通过工作区级别的初始化脚本,所有集群启动时会自动执行该脚本,将Spark配置应用到每个节点。
1. 编写全局初始化脚本
创建一个Shell脚本,用于修改Spark默认配置文件,示例如下:
#!/bin/bash # 工作区全局Spark配置初始化脚本 # 定位Spark默认配置文件路径(Databricks集群固定路径) SPARK_DEFAULTS_CONF="/databricks/spark/conf/spark-defaults.conf" # 添加/更新Spark核心配置 echo "spark.driver.memory 8g" >> $SPARK_DEFAULTS_CONF echo "spark.executor.memory 16g" >> $SPARK_DEFAULTS_CONF echo "spark.executor.cores 4" >> $SPARK_DEFAULTS_CONF echo "spark.sql.shuffle.partitions 200" >> $SPARK_DEFAULTS_CONF # 配置序列化优化 echo "spark.serializer org.apache.spark.serializer.KryoSerializer" >> $SPARK_DEFAULTS_CONF echo "spark.kryoserializer.buffer.max 512m" >> $SPARK_DEFAULTS_CONF # 自定义配置项(按需添加) echo "spark.custom.config.key custom-value" >> $SPARK_DEFAULTS_CONF # 确保配置文件权限正确 chmod 644 $SPARK_DEFAULTS_CONF
2. 部署脚本到工作区
- 将脚本上传至DBFS路径,比如
dbfs:/databricks/init_scripts/global_spark_config.sh- 可通过Databricks UI的DBFS浏览器上传,或使用CLI命令:
databricks fs cp ./global_spark_config.sh dbfs:/databricks/init_scripts/
- 可通过Databricks UI的DBFS浏览器上传,或使用CLI命令:
3. 配置工作区全局初始化脚本
- 进入Azure Databricks工作区的管理控制台
- 切换到集群 -> 全局初始化脚本页面
- 点击添加脚本,选择DBFS路径并填入刚才的脚本地址
- 启用该脚本并保存设置
生效说明
- 新创建的集群会自动执行该脚本,配置立即生效
- 已运行的集群需要重启才能应用新配置
方法二:使用集群策略强制配置(更可控)
如果需要禁止用户在集群创建时修改配置,可通过工作区集群策略实现全局强制配置:
- 进入管理控制台 -> 集群策略 -> 创建策略
- 在策略定义中添加Spark配置规则,示例JSON:
{ "spark_conf.spark.driver.memory": { "type": "fixed", "value": "8g" }, "spark_conf.spark.executor.memory": { "type": "fixed", "value": "16g" }, "spark_conf.spark.sql.shuffle.partitions": { "type": "fixed", "value": "200" }, "spark_conf.spark.serializer": { "type": "fixed", "value": "org.apache.spark.serializer.KryoSerializer" } }
- 将该策略设置为工作区默认策略,所有新集群会自动继承这些配置
验证配置是否生效
- 启动集群后,打开Spark UI的环境标签页,搜索对应配置项确认值
- 在Notebook中运行代码验证:
# 打印配置值 print("Driver内存:", spark.conf.get("spark.driver.memory")) print("Shuffle分区数:", spark.conf.get("spark.sql.shuffle.partitions"))
内容的提问来源于stack exchange,提问作者ChirGors
相关产品推荐
相关产品推荐

