Photon とは
この記事では、Photon クエリ エンジンでワークロードを実行する利点について説明します。
Photon は、ハイパフォーマンスの Azure Databricks ネイティブ ベクター化クエリ エンジンであり、SQL ワークロードと DataFrame 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 ウェアハウスと、ノートブックとワークフローのサーバーレス コンピューティングで既定で実行されます。
Photon は、既定で Databricks Runtime 9.1 LTS 以降を実行しているコンピューティングで有効です。
Photon は、ML 用の Databricks Runtime 15.2 以降を実行しているコンピューティングで手動で有効にすることができます。
Photon の有効化を構成する
汎用コンピューティングとジョブ コンピューティングで Photon を有効または無効にするには、Compute UI の [Photon Acceleration を使用する] チェックボックスをオンにします。
Photon は、 Clusters API または Jobs API で作成されたコンピューティングでは、既定では有効になっていません。 Photon を有効にするには、runtime_engine
属性を PHOTON
に設定する必要があります。
サポートされているインスタンスの種類
ドライバー ノードおよびワーカー ノード上のインスタンス番号については、限られたセットが Photon でサポートされています。 Photon のインスタンス型では、Photon 以外のランタイムを実行しているインスタンス型とは異なる速度で DBU が消費されます。 Photon インスタンスと DBU の消費の詳細については、Azure Databricks の価格に関するページを参照してください。
サポートされている演算子、式、データ型
Photon が対象とする演算子、式、データ型を以下に示します。
演算子
- スキャン、フィルター、プロジェクト
- ハッシュ集計 / 結合 / シャッフル
- 入れ子になったループの結合
- Null-Aware の反結合
- Union、Expand、ScalarSubquery
- Delta/Parquet の書き込みシンク
- 並べ替え
- Windows 関数
式
- 比較 / ロジック
- 算術演算 / 数学 (最も多い)
- 条件付き (IF、CASE など)
- 文字列 (一般的なもの)
- キャスト
- 集計 (最も一般的なもの)
- 日付 / タイムスタンプ
データ型
- Byte/Short/Int/Long
- Boolean
- String または Binary
- Decimal
- フローティング / ダブル
- 日付 / タイムスタンプ
- 構造体
- Array
- マップ
Photon を必要とする機能
Photon を必要とする機能を以下に示します。
- 読み取りと書き込み用の予測 I/O。 「予測 I/O とは」を参照してください。
- H3 地理空間式。 「H3 地理空間の関数」を参照してください。
- 動的なファイルの排除。 「動的なファイルの排除」を参照してください。
制限事項
- 構造化ストリーミング: Photon は現在、Delta、Parquet、CSV、JSON を使用したステートレス ストリーミングをサポートしています。 デルタ シンクまたは Parquet シンクに書き込む場合、ステートレス Kafka および Kinesis ストリーミングがサポートされます。
- Photon では、UDF や RDD API はサポートされていません。
- Photon は、通常 2 秒以内に実行されるクエリには影響しません。
ワークロードがサポートされていない操作にヒットした場合、コンピューティング リソースは、残りのワークロードに対して標準ランタイム エンジンに切り替わります。