有关 Azure Databricks 的优化建议
Azure Databricks 提供许多优化,支持 lakehouse 上从大规模 ETL 处理到临时交互式查询的各种工作负载。 其中许多优化是自动进行的。 只需使用 Azure Databricks 就能获得它们所带来的好处。 此外,大多数 Databricks Runtime 功能都需要 Delta Lake,它是用于在 Azure Databricks 中创建表的默认格式。
Azure Databricks 会配置用于优化大多数工作负载的默认值。 但在某些情况下,更改配置设置可以提高性能。
Databricks Runtime 性能增强
注意
通过最新的 Databricks Runtime 可以利用最新的性能增强。 在 Databricks Runtime 10.4 LTS 和更高版本中默认已启用此处所述的所有行为。
- 磁盘缓存通过将数据加载到附加至计算群集的磁盘卷来加速对 Parquet 数据文件的重复读取。
- 动态文件修剪可以提高查询性能,它会跳过不包含与查询谓词匹配的数据文件的目录。
- 低随机合并 (Low Shuffle Merge) 可以减少
MERGE
操作重写的数据文件数量,并减少重新计算ZORDER
群集的需要。 - Apache Spark 3.0 引入了自适应查询执行,为许多操作提供增强的性能。
Databricks 增强的性能建议
- 可以克隆 Azure Databricks 上的表,以创建源数据集的深层或浅层副本。
- 基于成本的优化器利用表统计信息来提高查询性能。
- 你可以使用 Spark SQL 与 JSON 字符串进行交互,而无需分析字符串。
- 高阶函数为许多没有通用 Spark 运算符的操作提供内置的优化性能。 与用户定义的函数相比,高阶函数的性能优势更好。
- Azure Databricks 提供许多内置运算符和特殊语法用于处理复杂数据类型(包括数组、结构和 JSON 字符串)。
- 可以手动调整范围联接的设置。 请参阅范围联接优化。
选择加入行为
- Azure Databricks 默认提供写可序列化隔离保证;将隔离级别更改为可序列化能够降低并发操作的吞吐量,但可能仅在需要读可序列化时才有必要这样做。
- 可以使用 bloom 筛选器索引来减少扫描的数据文件不包含与给定条件匹配的记录的可能性。