BROKER LOAD
説明
StarRocksは、MySQLベースのロード方法であるBroker Loadを提供します。ロードジョブを送信すると、StarRocksは非同期でジョブを実行します。SELECT * FROM information_schema.loadsを使用してジョブの結果をクエリできます。この機能はv3.1以降でサポートされています。背景情報、原則、サポートされているデータファイル形式、単一テーブルロードと複数テーブルロードの実行方法、ジョブ結果の表示方法については、loading overviewを参照してください。
StarRocks テーブルにデー タを ロード できるのは、これらの StarRocks テーブルに対して INSERT 権限を持つユーザーのみです。INSERT 権限を持っていない場合は、 GRANT に記載されている手順に従って、StarRocks クラスターに接続するために使用するユーザーに INSERT 権限を付与してください。
構文
LOAD LABEL [<database_name>.]<label_name>
(
data_desc[, data_desc ...]
)
WITH BROKER
(
StorageCredentialParams
)
[PROPERTIES
(
opt_properties
)
]
StarRocksでは、いくつかのリテラルがSQL言語によって予約キーワードとして使用されます。これらのキーワードをSQL文で直接使用しないでください。SQL文でそのようなキーワードを使用したい場合は、バックティック (`) で囲んでください。Keywordsを参照してください。
パラメータ
database_name と label_name
label_nameはロードジョブのラベルを指定します。
database_nameは、宛先テーブルが属するデータベースの名前をオプションで指定します。
各ロードジョブには、データベース全体で一意のラベルがあります。ロードジョブのラベルを使用して、ロードジョブの実行ステータスを表示し、同じデータを繰り返しロードするのを防ぐことができます。ロードジョブがFINISHED状態に入ると、そのラベルは再利用できません。CANCELLED状態に入ったロードジョブのラベルのみが再利用可能です。ほとんどの場合、ロードジョブのラベルは、そのロードジョブを再試行して同じデータをロードするために再利用され、Exactly-Onceセマンティクスを実装します。
ラベルの命名規則については、System limitsを参照してください。
data_desc
ロードするデータのバッチの説明です。各data_descディスクリプタは、データソース、ETL関数、宛先StarRocksテーブル、および宛先パーティションなどの情報を宣言します。
Broker Loadは、一度に複数のデータファイルをロードすることをサポートしています。1つのロードジョブで、複数のdata_descディスクリプタを使用してロードしたい複数のデータファイルを宣言するか、1つのdata_descディスクリプタを使用して、すべてのデータファイルをロードしたいファイルパスを宣言することができます。Broker Loadは、複数のデータファイルをロードする各ロードジョブのトランザクションの原子性も保証できます。原子性とは、1つのロードジョブで複数のデータファイルをロードする際に、すべて成功するか失敗するかのいずれかであることを意味します。いくつかのデータファイルのロードが成功し、他のファイルのロードが失敗することはありません。
data_descは次の構文をサポートしています:
DATA INFILE ("<file_path>"[, "<file_path>" ...])
[NEGATIVE]
INTO TABLE <table_name>
[PARTITION (<partition1_name>[, <partition2_name> ...])]
[TEMPORARY PARTITION (<temporary_partition1_name>[, <temporary_partition2_name> ...])]
[COLUMNS TERMINATED BY "<column_separator>"]
[ROWS TERMINATED BY "<row_separator>"]
[FORMAT AS "CSV | Parquet | ORC"]
[(format_type_options)]
[(column_list)]
[COLUMNS FROM PATH AS (<partition_field_name>[, <partition_field_name> ...])]
[SET <k1=f1(v1)>[, <k2=f2(v2)> ...]]
[WHERE predicate]
data_descには次のパラメータが含まれている必要があります:
-
file_pathロードしたい1つ以上のデータファイルの保存パスを指定します。
このパラメータを1つのデータファイルの保存パスとして指定できます。たとえば、HDFSサーバー上のパス
/user/data/tablenameから20210411という名前のデータファイルをロードするために、このパラメータを"hdfs://<hdfs_host>:<hdfs_port>/user/data/tablename/20210411"として指定できます。また、ワイルドカード
?、*、[]、{}、または^を使用して、複数のデータファイルの保存パスとしてこのパラメータを指定することもできます。Wildcard referenceを参照してください。たとえば、このパラメータを"hdfs://<hdfs_host>:<hdfs_port>/user/data/tablename/*/*"または"hdfs://<hdfs_host>:<hdfs_port>/user/data/tablename/dt=202104*/*"として指定し、HDFSサーバー上のパス/user/data/tablenameのすべてのパーティションまたは202104パーティションのみからデータファイルをロードすることができます。注意
ワイルドカードは中間パスを指定するためにも使用できます。
前述の例では、
hdfs_hostおよびhdfs_portパラメータは次のように説明されています:-
hdfs_host: HDFSクラスター内のNameNodeホストのIPアドレス。 -
hdfs_port: HDFSクラスター内のNameNodeホストのFSポート。デフォルトのポート番号は9000です。
注意
- Broker Loadは、S3またはS3Aプロトコルに従ってAWS S3へのアクセスをサポートしています。したがって、AWS S3からデータをロードする場合、ファイルパスとして渡すS3 URIのプレフィックスに
s3://またはs3a://を含めることができます。 - Broker Loadは、gsプロトコルに従ってのみGoogle GCSへのアクセスをサポートしています。したがって、Google GCSからデータをロードする場合、ファイルパスとして渡すGCS URIのプレフィックスに
gs://を含める必要があります。 - Blob Storageからデータをロードする場合、wasbまたはwasbsプロトコルを使用してデータにアクセスする必要があります:
- ストレージアカウントがHTTP経由でのアクセスを許可する場合、wasbプロトコルを使用し、ファイルパスを
wasb://<container_name>@<storage_account_name>.blob.core.windows.net/<path>/<file_name>/*として記述します。 - ストレージアカウントがHTTPS経由でのアクセスを許可する場合、wasbsプロトコルを使用し、ファイルパスを
wasbs://<container_name>@<storage_account_name>.blob.core.windows.net/<path>/<file_name>/*として記述します。
- ストレージアカウントがHTTP経由でのアクセスを許可する場合、wasbプロトコルを使用し、ファイルパスを
- Data Lake Storage Gen2からデータをロードする場合、abfsまたはabfssプロトコルを使用してデータにアクセスする必要があります:
- ストレージアカウントがHTTP経由でのアクセスを許可する場合、abfsプロトコルを使用し、ファイルパスを
abfs://<container_name>@<storage_account_name>.dfs.core.windows.net/<file_name>として記述します。 - ストレージアカウントがHTTPS経由でのアクセスを許可する場合、abfssプロトコルを使用し、ファイルパスを
abfss://<container_name>@<storage_account_name>.dfs.core.windows.net/<file_name>として記述します。
- ストレージアカウントがHTTP経由でのアクセスを許可する場合、abfsプロトコルを使用し、ファイルパスを
- Data Lake Storage Gen1からデータをロードする場合、adlプロトコルを使用してデータにアクセスし、ファイルパスを
adl://<data_lake_storage_gen1_name>.azuredatalakestore.net/<path>/<file_name>として記述します。
-
-
INTO TABLE宛先StarRocksテーブルの名前を指定します。
data_descには次のパラメータもオプションで含めることができます:
-
NEGATIVE特定のデータバッチのロードを取り消します。これを達成するには、
NEGATIVEキーワードを指定して同じデータバッチをロードする必要があります。注意
このパラメータは、StarRocksテーブルが集計テーブルであり、そのすべての値列が
sum関数によって計算される場合にのみ有効です。 -
PARTITIONデータをロードしたいパーティションを指定します。デフォルトでは、このパラメータを指定しない場合、ソースデータはStarRocksテーブルのすべてのパーティションにロードされます。
-
TEMPORARY PARTITION