在 Azure Databricks 上设置 Spark 配置属性

可以设置 Spark 配置属性(Spark confs)来自定义计算环境中的设置。

Databricks 一般不建议配置大部分 Spark 属性。 尤其是在从开源 Apache Spark 迁移时或者升级 Databricks Runtime 版本时,旧的 Spark 配置可能会替代优化工作负载的新默认行为。

对于 Spark 属性控制的许多行为,Azure Databricks 还提供了在表级别启用行为或将自定义行为配置为写入操作的一部分的选项。 例如,架构演变以前由 Spark 属性控制,但现已涵盖在 SQL、Python 和 Scala 中。 请参阅用于合并的架构演变语法

为笔记本和作业配置 Spark 属性

可以为笔记本和作业设置 Spark 属性。 配置的范围取决于配置的设置方式。

配置的属性: 适用于:
使用计算配置 所有笔记本和作业都使用计算资源来运行。
在笔记本中 仅限适用于当前笔记本的 SparkSession。

有关在计算级别配置 Spark 属性的说明,请参阅 Spark 配置

若要在笔记本中设置 Spark 属性,请使用以下语法:

SQL

SET spark.sql.ansi.enabled = true

Python

spark.conf.set("spark.sql.ansi.enabled", "true")

Scala

spark.conf.set("spark.sql.ansi.enabled", "true")

在 Databricks SQL 中配置 Spark 属性

Databricks SQL 允许管理员在工作区设置菜单中为数据访问配置 Spark 属性。 请参阅 数据访问配置

除了数据访问配置之外,Databricks SQL 仅允许少量 Spark confs,为简单起见,这些配置已别名化为较短名称。 请参阅配置参数

对于大多数受支持的 SQL 配置,可以替代当前会话中的全局行为。 以下示例关闭 ANSI 模式:

SET ANSI_MODE = false

为 DLT 管道配置 Spark 属性

DLT 允许为一个管道、为管道配置的单个计算资源,或为单个数据流、具体化视图和流式处理表配置 Spark 属性。

可以使用 UI 或 JSON 设置管道和计算 Spark 属性。 请参阅 配置DLT管道

在 DLT 修饰器函数中使用 spark_conf 选项来配置流、视图或表的 Spark 属性。 请参阅 DLT Python 语言参考

为无服务器笔记本和作业配置 Spark 属性

无服务器计算不支持为笔记本或作业设置大部分 Spark 属性。 下面是可配置的属性:

财产 违约 描述
spark.databricks.execution.timeout 9000 Spark Connect 查询的执行超时(以秒为单位)。 默认值仅适用于在无服务器计算上运行的笔记本。 对于使用标准访问模式在无服务器计算和计算上运行的作业,除非设置了此属性,否则不会超时。
spark.sql.legacy.timeParserPolicy CORRECTED 时间解析器策略。
spark.sql.session.timeZone Etc/UTC 会话本地时区的 ID,格式可以是基于区域的时区 ID 或时区偏移量。
spark.sql.shuffle.partitions auto 用于联接或聚合时进行数据重排的默认分区数。
spark.sql.ansi.enabled true 如果为 true,Spark SQL 使用符合 ANSI 的方言,而不是符合 Hive 的方言。

获取 Spark 配置的当前设置

使用以下语法查看 Spark 配置的当前设置:

spark.conf.get("configuration_name")