Photonとは

この記事では、Photonクエリエンジンでワークロードを実行する利点について説明します。

Photon は、SQL ワークロードと DataFrame API 呼び出しをより高速に実行し、ワークロードあたりの総コストを削減する、高性能な Databricks ネイティブのベクトル化クエリ エンジンです。 Photon は Apache Spark APIsと互換性があるため、既存のコードで動作します。

Photonの機能

以下は、Photonを使用する主な機能と利点です。

  • Delta テーブルと Parquet テーブルでの SQL および同等の DataFrame 操作のサポート。

  • データをより高速に処理し、集計と結合を含む高速クエリー。

  • ディスクキャッシュからデータに繰り返しアクセスする場合のパフォーマンスが向上します。

  • 多くの列と多数の小さなファイルを持つテーブルでの堅牢なスキャンパフォーマンス。

  • UPDATEDELETEMERGE INTOINSERTCREATE TABLE AS SELECT(数千の列を含む幅の広いテーブルを含む) を使用した Delta と Parquet の書き込みの高速化。

  • ソート・マージ結合をハッシュ結合に置き換えます。

  • AI および ML ワークロードの場合、Photon は Spark SQL、Spark DataFrames、特徴量エンジニアリング、GraphFrames、xgboost4j を使用するアプリケーションのパフォーマンスを向上させます。

Photonの有効化

Photon の有効化は、コンピュートのタイプによって異なります。

  • クラシックおよびサーバレスのSQLウェアハウスでは、デフォルトでPhotonが実行されます。

Photonの有効化を設定する

all-purposeコンピュートとジョブコンピュートでPhotonを有効または無効にするには、 コンピュート UIUse Photon Acceleration (Photonアクセラレーションを使用)チェックボックスをオンにします。

Photon は、 クラスターAPIまたは ジョブAPIで作成されたコンピュートでは、デフォルトによって有効になっていません。 Photon を有効にするには、 runtime_engine 属性を PHOTONに設定する必要があります。

サポートされているインスタンスタイプ

Photonは、ドライバーノードとワーカーノードで多くのインスタンスタイプをサポートしています。 Photonインスタンスタイプは、非Photonランタイムを実行している同じインスタンスタイプとは異なるレートでDBUを消費します。

Photon インスタンスと DBU の消費量の詳細については、 Databricks の価格ページを参照してください。

サポートされている演算子、式、およびデータ型

以下は、Photonがカバーする演算子、式、およびデータ型です。

演算子

  • スキャン、フィルター、投影

  • ハッシュ集計/結合/シャッフル

  • ネスト・ループ結合

  • ヌル対応アンチジョイン(Null-Aware Anti Join)

  • Union、Expand、ScalarSubquery

  • Delta/Parquet 書き込みシンク

  • 並べ替え

  • ウィンドウ関数

  • 比較/ロジック

  • 算数/数学(ほとんど)

  • 条件付き (IF、CASE など)

  • 文字列(一般的なもの)

  • キャスト

  • アグリゲート(最も一般的なもの)

  • 日付/タイムスタンプ

データの種類

  • バイト/ショート/イント/ロング

  • ブール値

  • 文字列/バイナリ

  • DECIMALタイプ

  • Float/Double (浮動小数点数/倍精度

  • 日付/タイムスタンプ

  • 構造体

  • 配列

  • Map

Photonを必要とする機能

以下は、Photonを必要とする機能です。

制限事項

  • 構造化ストリーミング: Photonは現在、Delta、Parquet、CSV、JSONによるステートレスストリーミングをサポートしています。 ステートレスな Kafka と Kinesis のストリーミングは、Delta または Parquet シンクへの書き込み時にサポートされます。

  • PhotonはUDFやRDD APIsをサポートしていません。

  • Photonは、通常2秒以内に実行されるクエリーには影響を与えません。

ワークロードがサポートされていないオペレーションにヒットした場合、コンピュート リソースは残りのワークロードで標準のランタイムエンジンに切り替わります。