Spark Load を使用してデータを一括ロードする
このロードは、外部の Apache Spark™ リソースを使用してインポートデータを事前処理し、インポートのパフォーマンスを向上させ、計算リソ ースを節約します。主に 初期移行 や 大規模データインポート に使用され、StarRocks へのデータ量は TB レベルまで対応します。
Spark load は 非同期 のインポート方法であり、ユーザーは MySQL プロトコルを介して Spark タイプのインポートジョブを作成し、SHOW LOAD を使用してインポート結果を確認します。
注意
- StarRocks テーブルに対して INSERT 権限を持つユーザーのみがこのテーブルにデータをロードできます。GRANT に従って必要な権限を付与できます。
- Spark Load は、主キーテーブルにデータをロードするためには使用できません。
用語の説明
- Spark ETL: インポートプロセスでのデータの ETL を主に担当し、グローバル辞書の構築(BITMAP タイプ)、パーティショニング、ソート、集計などを含みます。
- Broker: Broker は独立したステートレスプロセスです。ファイルシステムインターフェースをカプセル化し、StarRocks にリモートストレージシステムからファイルを読み取る機能を提供します。
- Global Dictionary: 元の値からエンコードされた値へのデータ構造を保存します。元の値は任意のデータ型であり、エンコードされた値は整数です。グローバル辞書は、正確なカウントディスティンクトが事前計算されるシナリオで主に使用されます。
基本原理
ユーザーは MySQL クライアントを通じて Spark タイプのインポートジョブを提出し、FE がメタデータを記録し、提出結果を返します。
spark load タスクの実行は、以下の主要なフェーズに分かれます。
- ユーザーが spark load ジョブを FE に提出します。
- FE は ETL タスクを Apache Spark™ クラスターに提出して実行するようスケジュールします。
- Apache Spark™ クラスターは、グローバル辞書の構築(BITMAP タイプ)、パーティショニング、ソート、集計などを含む ETL タスクを実行します。
- ETL タスクが完了すると、FE は各事前処理済みスライスのデータパスを取得し、関連する BE に Push タスクを実行するようスケジュールします。
- BE は Broker プロセスを通じて HDFS からデータを読み取り、StarRocks ストレージ形式に変換します。
Broker プロセスを使用しない場合、BE は HDFS から直接データを読み取ります。
- FE は有効なバージョンをスケジュールし、インポートジョブを完了します。
以下の図は、spark load の主なフローを示しています。
