什么是 Photon?

适用于:check marked yes Databricks SQL check marked yes Databricks Runtime 9.1 及更高版本

了解在 Photon 上运行工作负载的优点、它支持的功能以及如何启用或禁用 Photon。 Photon 在 Databricks SQL 仓库中默认处于启用状态,并且与 Apache Spark API 兼容,因此它适用于现有代码。

Photon 的用途是什么?

Photon 是一种高性能 Azure Databricks 原生矢量化查询引擎,可更快地运行 SQL 工作负载和数据帧 API 调用,以减少每个工作负载的总成本。

以下是使用 Photon 的主要功能和优势。

  • 支持使用 Delta 和 Parquet 表执行 SQL 和等效的数据帧操作。
  • 加速查询,可更快地处理数据,并包括聚合和联接。
  • 从磁盘缓存重复访问数据时速度更快。
  • 对于包含大量列和大量小文件的表,扫描性能更可靠。
  • 使用 UPDATEDELETEMERGE INTOINSERTCREATE TABLE AS SELECT 更快地编写 Delta 和 Parquet,包括包含数千列的宽表。
  • 将排序合并联接替换成了哈希联接。

Photon 入门

默认情况下,Photon 在运行 Databricks Runtime 9.1 LTS 及更高版本的群集上启用。

若要在群集上手动禁用或启用 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 的功能。

限制

  • 结构化流式处理:Photon 目前支持使用 Delta、Parquet、CSV 和 JSON 进行无状态流式处理。 写入 Delta 或 Parquet 接收器时,支持无状态 Kafka 和 Kinesis 流式处理。
  • Photon 不支持 UDF 或 RDD API。
  • Photon 不会影响通常在两秒内运行的查询。

Photon 不支持的功能与使用 Databricks Runtime 时的运行方式相同。