什么是 Photon?
本文介绍在 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 或更高版本,手动启用 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
- Boolean
- 字符串/二进制
- 小数
- 浮点数/双精度
- 日期/时间戳
- 结构
- 数组
- 映射
需要 Photon 的功能
以下是需要 Photon 的功能。
- 用于读取和写入的预测 I/O。 请参阅什么是预测性 I/O?
- H3 地理空间表达式。 请参阅 H3 地理空间函数。
- 动态文件修剪。 请参阅动态文件修剪。
限制
- 结构化流式处理:Photon 目前支持使用 Delta、Parquet、CSV 和 JSON 进行无状态流式处理。 写入 Delta 或 Parquet 接收器时,支持无状态 Kafka 和 Kinesis 流式处理。
- Photon 不支持 UDF 或 RDD API。
- Photon 不会影响通常在两秒内运行的查询。
如果工作负载达到不受支持的操作,则计算资源会切换到剩余工作负荷的标准运行时引擎。