Broker Load
1. Broker Load は、正常に実行されて FINISHED 状態にあるロードジョブを再実行することをサポートしていますか?
Broker Load は、正常に実行されて FINISHED 状態にあるロードジョブを再実行することをサポートしていません。また、データの損失や重複を防ぐために、正常に実行されたロードジョブのラベルを再利用することはできません。SHOW LOAD を使用してロードジョブの履歴を表示し、再実行したいロードジョブを見つけることができます。その後、そのロードジョブの情報をコピーし、ラベルを除くジョブ情報を使用して別のロードジョブを作成できます。
2. Broker Load を使用して HDFS からデータをロードする際、宛先の StarRocks テーブルにロードされた日付と時刻の値が、ソースデータファイルの日付と時刻の値よりも 8 時間遅れている場合はどうすればよいですか?
宛先の StarRocks テーブルと Broker Load ジョブは、作成時に中国標準時 (CST) タイムゾーンを使用するようにコンパイルされています(timezone パラメータを使用して指定)。しかし、サーバーは協定世界時 (UTC) タイムゾーンに基づいて実行されるように設定されています。その結果、データロード中にソースデータファイルの日付と時刻の値に 8 時間が追加されます。この問題を防ぐために、宛先の StarRocks テーブルを作成する際に timezone パラメータを指定しないでください。
3. Broker Load を使用して ORC 形式のデータをロードする際に、ErrorMsg: type:ETL_RUN_FAIL; msg:Cannot cast '<slot 6>' from VARCHAR to ARRAY<VARCHAR(30)> エラーが発生した場合はどうすればよいですか?
ソースデータファイルの列名が宛先の StarRocks テーブルの列名と異なります。この場合、ロードステートメントで SET 句を使用してファイルとテーブル間の列マッピングを指定する必要があります。SET 句を実行する際、StarRocks は型推論を行う必要がありますが、ソースデータを宛先データ型に変換するための cast 関数の呼び出しに失敗します。この問題を解決するには、ソースデータファイルの列名が宛先の StarRocks テーブルの列名と同じであることを確認してください。これにより、SET 句は不要となり、StarRocks はデータ型変換を行うために cast 関数を呼び出す必要がなくなります。その後、Broker Load ジョブは正常に実行されます。
4. Broker Load ジョブがエラーを報告しないのに、なぜロードされたデータをクエリできないのですか?
Broker Load は非同期のロード方法です。ロードステートメントがエラーを返さなくても、ロードジョブが失敗することがあります。Broker Load ジョブを実行した後、SHOW LOAD を使用してロードジョブの結果と errmsg を確認できます。その後、ジョブの設定を変更して再試行できます。
5. "failed to send batch" または "TabletWriter add batch with unknown id" エラーが発生した場合はどうすればよいですか?
データの書き込みにかかる時間が上限を超え、タイムアウトエラーが発生しています。この問題を解決するには、セッション変数 query_timeout と BE 設定項目 streaming_load_rpc_max_alive_time_sec の設定をビジネス要件に基づいて変更します。