注: 以下の翻訳の正確性は検証されていません。AIPを利用して英語版の原文から機械的に翻訳されたものです。

Pipeline Builder の高速パイプライン

Pipeline Builder は、バッチパイプラインとインクリメンタル(差分処理)パイプラインの実行時間を短縮できる高速パイプラインに対応しています。このパイプラインは、Rust ↗ で記述されたオープンソースのクエリエンジンである DataFusion ↗ を基盤とするバックエンドを使用します。従来の Spark ベースのパイプラインと比べて、高速パイプラインは計算処理を大幅に高速化できます。

高速パイプラインは、以前は軽量パイプラインと呼ばれていました。「軽量」という用語は、処理するデータのサイズではなく、パイプラインの実行に必要な時間と計算リソースが少ないことを指していました。今回の名称変更は、大規模なデータセットでも、高速パイプラインが実行時間と計算リソースの使用量の両方を削減することを反映しています。

高速パイプラインは、ビルド時間を最適化し、低遅延の操作を効率的に実行するために特別に設計されています。特に、実行時間が15分未満のパイプラインは、高速パイプラインの設定による効果が最も大きくなります。

パフォーマンスを改善するために、さまざまなパイプライン設定を試すことをお勧めします。ブランチで機能をテストしたり、既存のパイプラインのコピーを作成したりして、新しい設定でのパフォーマンスを元の設定と比較しながら機能を探索できます。

新しい高速パイプラインを作成する

Pipeline Builder でのパイプライン作成に慣れていない場合は、先に Pipeline Builder でバッチパイプラインを作成する方法のドキュメントを確認してください。

  1. Pipeline Builder を開き、新規パイプラインの作成を選択します。
  2. パイプラインの名前と目的の場所を入力した後、パイプラインの種類で高速パイプラインを選択します。
  3. パイプラインの作成を選択します。

パイプライン選択のスクリーンショット

高速パイプラインと標準バッチパイプラインを相互に変換する

次の手順で、高速パイプラインと標準バッチパイプラインを相互に変換できます。同じ手順を繰り返して目的の選択肢を選択することで、いつでも変換を元に戻せます。

  1. バッチパイプラインを変換するには、設定に移動し、高速パイプラインに変換を選択します。

パイプライン設定の「高速パイプラインに変換」オプションのスクリーンショット

パイプラインをバッチパイプラインに戻すには、設定に移動し、バッチパイプラインに変換を選択します。

パイプライン設定の「バッチパイプラインに変換」オプションのスクリーンショット

  1. パイプラインが新しいパイプラインの種類に対応している場合は、変換を確定するためのダイアログボックスが表示されます。

高速パイプラインへの変換が可能であることを示す確認メッセージが表示されたダイアログ。

  1. パイプラインが新しいパイプラインの種類に対応していない場合は、変換を試みると警告が表示されます。警告には、高速パイプラインに対応していない式やデータ加工が一覧表示されます。

高速パイプラインへの変換ができないことを示し、対応していない機能を一覧表示する警告が表示されたダイアログ。

パイプライン変換チェックを表示はいつでもオンにでき、高速パイプラインのオプションに対応していない項目を確認できます。

パイプライン変換チェックを表示する設定がオンになっているダイアログ。

パイプライン変換チェックを表示をオンにすると、画面下部の警告パネルに高速パイプラインへの変換の互換性チェックセクションが表示されます。このセクションには、高速パイプラインで利用できないデータ加工と式が一覧表示されます。対応していないデータ加工を含むノードをすばやく見つけるには、該当する行の右側にあるノードに移動アイコンをクリックします。

高速パイプラインへの変換の互換性チェックセクションを含む、画面下部の警告パネル。

既知の制限事項

高速パイプラインは現在、標準バッチパイプラインで利用できるデータ加工と式のすべてに対応しているわけではありません。特に、LLM 機能、地理空間機能、メディアセットの操作を含むデータ加工と式には対応していません。

高速パイプラインとバッチパイプラインには違いがあるため、プレビューを使用するか、ビルドの出力を調べて、必ず結果を確認してください。

高速パイプラインで利用できる式のほとんどは、バッチパイプラインの同等の式と同じように動作します。既知の制限事項は次のとおりです。

  • 浮動小数点の結果は、末尾の桁が異なる場合があります。
  • Decimal のオーバーフローでは、NULL 値を出力する代わりにエラーが発生します。
  • 構造体は <、>、== などで比較できません。
  • pow のオーバーフローは、inf ではなく NULL を返します。
  • キャスト機能では、構造体、配列、マップなどの複合データ型や、それらの文字列への変換に違いがある場合があります。たとえば、これらのデータ型を文字列に変換するときに、null の表示が異なる場合があります。
  • TimestampToString、DateToString、StringToTimestamp、StringToDate で利用できる形式には制限があります。
  • 構造体、配列、マップなどの複合データ型では、最小値と最大値を利用できません。
  • 出力が空の場合は、空のファイルではなく、ファイル数が0になります。
  • ビルド時には、行数以外の統計情報を利用できません。
  • 時系列参照値の作成には対応していません。
  • 学習済みモデルのノードには対応していません。

パイプラインの種類別の対応比較

以下のサイズに関する推奨事項は一般的な目安であり、すべてのクエリに当てはまるわけではありません。適切な種類のデータ加工であれば、高速な軽量エンジンはテラバイト規模の入力でも単一ノードで処理できます。

パイプラインが上記セクションの制限事項に該当しない場合は、まず高速オプションを使用することを推奨します。データの規模によって必要になる場合や、高速パイプラインに対応していないデータ加工や式を使用したい場合は、標準の Spark オプションに切り替えられます。異なる種類のパイプラインを相互に変換できます。

特性標準高速
最適なデータサイズ(非圧縮)> 50GB1-50GB
最適な行数*> 200,000,0001-200,000,000
起動時のオーバーヘッド大きい控え目
メモリー効率良好優秀
処理速度(小規模データ)遅い優秀
処理速度(中規模データ)速い優秀
処理速度(大規模データ)優秀変動あり
並列実行分散単一ノード
メモリースピリング自動自動

* 各クエリエンジンが処理できる行数は、スキーマによって異なります。これらの数値は、一般的なケースの目安として示しています。