本文介绍在 Photon 查询引擎上运行工作负载的益处。
Photon 是一种高性能 Azure Databricks 原生矢量化查询引擎,可更快地运行 SQL 工作负载和数据帧 API 调用,以减少每个工作负载的总成本。 Photon 与 Apache Spark API 兼容,因此它适用于现有代码。
Photon 功能
以下是使用 Photon 的主要功能和优势。
- 支持使用 Delta 和 Parquet 表执行 SQL 和等效的数据帧操作。
- 加速查询,可更快地处理数据,并包括聚合和联接。
- 从磁盘缓存重复访问数据时速度更快。
- 对于包含大量列和大量小文件的表,扫描性能更可靠。
- 使用
UPDATE
、DELETE
、MERGE INTO
、INSERT
和CREATE TABLE AS SELECT
更快地编写 Delta 和 Parquet,包括包含数千列的宽表。 - 将排序合并联接替换成了哈希联接。
- 对于 AI 和 ML 工作负载,Photon 可以提高使用 Spark SQL、Spark DataFrames、特征工程、GraphFrames 和 xgboost4j 的应用程序的性能。
Photon 启用
Photon 启用因计算类型而异:
- Photon 默认在 SQL 仓库上运行,并针对笔记本和工作流进行无服务器计算。
- 默认情况下,在运行 Databricks Runtime 9.1 LTS 及更高版本的计算上启用 Photon。
- 可以在运行Databricks Runtime 15.2 for Machine Learning (EoS)或更高版本的计算环境中手动启用 Photon。
配置 Photon 启用
若要在通用计算和作业计算中启用或禁用 Photon,请在计算 UI 中选择“使用 Photon 加速”。
默认情况下,Photon 不会在使用群集 API 或作业 API 创建的任何计算上启用。 若要启用 Photon,必须将属性设置为 runtime_engine
PHOTON
.
支持的实例类型
Photon 在驱动程序和工作器节点上支持许多实例类型。 Photon 实例类型使用 DBU 的速率不同于运行非 Photon 运行时的同一实例类型。 有关 Photon 实例和 DBU 消耗的详细信息,请参阅 Azure Databricks 定价页。
支持的运算符、表达式和数据类型
以下是 Photon 涵盖的运算符、表达式和数据类型。
运算符
- 扫描、筛选、项目
- 哈希聚合/联接/随机
- 嵌套的循环联接
- 识别 Null 反联接
- 联合、展开、ScalarSubquery
- Delta/Parquet 写入接收器
- 排序
- 窗口函数
表达式
- 比较/逻辑
- 算术/数学(大多数)
- 条件(IF、CASE 等)
- 字符串(常见字符串)
- 转换
- 聚合(最常见的聚合)
- 日期/时间戳
数据类型
- 字节/Short/Int/Long
- 布尔型
- 字符串/二进制
- 小数
- 浮点数/双精度
- 日期/时间戳
- 结构
- 数组
- 映射
需要 Photon 的功能
以下是需要 Photon 的功能。
- 用于读取和写入的预测 I/O。 请参阅什么是预测性 I/O?
- H3 地理空间表达式。 请参阅 H3 地理空间函数。
-
MERGE
、UPDATE
和DELETE
语句中的动态文件修剪。 请参阅动态文件修剪。
限制
- 结构化流式处理:Photon 目前支持使用 Delta、Parquet、CSV 和 JSON 进行无状态流式处理。 写入 Delta 或 Parquet 接收器时,支持无状态 Kafka 和 Kinesis 流式处理。
- Photon 不支持 UDF、RDD API 或数据集 API。
- Photon 不会影响通常在两秒内运行的查询。
如果工作负载达到不受支持的操作,则计算资源会切换到剩余工作负荷的标准运行时引擎。