什么是 Photon?

本文介绍在 Photon 查询引擎上运行工作负载的益处。

Photon 是一种高性能 Azure Databricks 原生矢量化查询引擎,可更快地运行 SQL 工作负载和数据帧 API 调用,以减少每个工作负载的总成本。 Photon 与 Apache Spark API 兼容,因此它适用于现有代码。

Photon 功能

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

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

Photon 启用

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 的功能。

限制

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

如果工作负载达到不受支持的操作,则计算资源会切换到剩余工作负荷的标准运行时引擎。