メインコンテンツまでスキップ

Broker Load

Broker Load

1. 「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」というエラーが発生した場合、どうすればよいですか?

データの書き込みにかかる時間が上限を超えるため、タイムアウトエラーが発生しています。この問題を解決するには、ビジネス要件に基づいて、session variablequery_timeoutBE configuration itemstreaming_load_rpc_max_alive_time_secの設定を変更してください。

6. 「LOAD-RUN-FAIL; msg:OrcScannerAdapter::init_include_columns. col name = xxx not found」というエラーが発生した場合、どうすればよいですか?

Parquet形式またはORC形式のデータをロードする場合、ソースデータファイルの最初の行にある列名がロード先のStarRocksテーブルの列名と同じかどうかを確認してください。

(tmp_c1,tmp_c2)
SET
(
id=tmp_c2,
name=tmp_c1
)

上記の例では、ソースデータファイルのtmp_c1tmp_c2の列をそれぞれロード先のテーブルのnameidの列にマッピングしています。SET句を指定しない場合、column_listパラメータで指定された列名がマッピングの宣言に使用されます。詳細については、BROKER LOADを参照してください。

注意

ソースデータファイルがApache Hive™によって生成されるORC形式のファイルで、ファイルの最初の行が(_col0, _col1, _col2, ...)を持つ場合、「Invalid Column Name」エラーが発生することがあります。このエラーが発生した場合は、SET句を使用して列マッピングを指定する必要があります。

7. Broker Loadジョブが非常に長い時間実行されるなどのエラーが発生した場合、どのように対処すればよいですか?

FEのログファイルfe.logを表示し、ジョブのラベルに基づいてロードジョブのIDを検索します。次に、BEのログファイルbe.INFOを表示し、ジョブのIDに基づいてロードジョブのログレコードを取得してエラーの原因を特定します。

8. Apache HDFSクラスタをHAモードで実行するにはどうすればよいですか?

HDFSクラスタをハイアベイラビリティ(HA)モードで実行する場合、以下のように設定します。

  • dfs.nameservices:HDFSクラスタの名前を指定します。例:"dfs.nameservices" = "my_ha"
  • dfs.ha.namenodes.xxx:HDFSクラスタ内のNameNodeの名前を指定します。複数のNameNode名を指定する場合は、カンマ(,)で区切ります。xxxは、dfs.nameservicesで指定したHDFSクラスタの名前です。例:"dfs.ha.namenodes.my_ha" = "my_nn"
  • dfs.namenode.rpc-address.xxx.nn:HDFSクラスタ内のNameNodeのRPCアドレスを指定します。nnは、dfs.ha.namenodes.xxxで指定したNameNode名です。例:"dfs.namenode.rpc-address.my_ha.my_nn" = "host:port"
  • dfs.client.failover.proxy.provider:クライアントが接続するNameNodeのプロバイダを指定します。デフォルト値:org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider

例:

(
"dfs.nameservices" = "my-ha",
"dfs.ha.namenodes.my-ha" = "my-namenode1, my-namenode2",
"dfs.namenode.rpc-address.my-ha.my-namenode1" = "nn1-host:rpc_port",
"dfs.namenode.rpc-address.my-ha.my-namenode2" = "nn2-host:rpc_port",
"dfs.client.failover.proxy.provider" = "org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider"
)

HAモードは、シンプル認証またはKerberos認証と組み合わせて使用できます。例えば、HAモードで実行されるHDFSクラスタにシンプル認証を使用する場合、次の設定を指定する必要があります。

(
"username"="user",
"password"="passwd",
"dfs.nameservices" = "my-ha",
"dfs.ha.namenodes.my-ha" = "my_namenode1, my_namenode2",
"dfs.namenode.rpc-address.my-ha.my-namenode1" = "nn1-host:rpc_port",
"dfs.namenode.rpc-address.my-ha.my-namenode2" = "nn2-host:rpc_port",
"dfs.client.failover.proxy.provider" = "org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider"
)

HDFSクラスタの設定をhdfs-site.xmlファイルに追加することができます。これにより、HDFSクラスタからデータをロードする際に、ファイルパスと認証情報の指定のみを行えばよくなります。

9. Hadoop ViewFS Federationをどのように構成しますか?

ViewFsに関連する設定ファイルcore-site.xmlhdfs-site.xmlbroker/confディレクトリにコピーします。

カスタムファイルシステムを使用する場合は、ファイルシステムに関連する**.jarファイルをbroker/lib**ディレクトリにコピーする必要もあります。

10. Kerberos認証が必要なHDFSクラスタにアクセスする際に、「Can't get Kerberos realm」エラーが発生した場合、どうすればよいですか?

すべてのブローカーが展開されているホスト上で**/etc/krb5.conf**ファイルが設定されていることを確認してください。

エラーが解消しない場合は、ブローカーの起動スクリプトのJAVA_OPTS変数の末尾に-Djava.security.krb5.conf:/etc/krb5.confを追加してください。