什么是 Photon?
适用于: Databricks SQL Databricks Runtime 9.1 及更高版本 Databricks Runtime 15.2 ML 及更高版本
了解在 Photon 上运行工作负载的优点、它支持的功能以及如何启用或禁用 Photon。 Photon 在 Databricks SQL 仓库中默认处于启用状态,并且与 Apache Spark API 兼容,因此它适用于现有代码。
Photon 的用途是什么?
Photon 是一种高性能 Azure Databricks 原生矢量化查询引擎,可更快地运行 SQL 工作负载和数据帧 API 调用,以减少每个工作负载的总成本。
以下是使用 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 在运行 Databricks Runtime 9.1 LTS 及更高版本的群集上启用。 Photon 也可用于运行适用于机器学习的 Databricks Runtime 15.2 及更高版本的群集。
若要在群集上手动禁用或启用 Photon,请在创建或编辑群集时选中“使用 Photon 加速”复选框。
如果使用群集 API 创建群集,请将 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 不会影响通常在两秒内运行的查询。
Photon 不支持的功能与使用 Databricks Runtime 时的运行方式相同。