CREATE ROUTINE LOAD
Routine Load は Apache Kafka® からメッセージを継続的に消費し、StarRocks にデータをロードすることができます。Routine Load は Kafka クラスターから CSV、JSON、Avro (v3.0.1 以降でサポート) データを消費し、plaintext
、ssl
、sasl_plaintext
、sasl_ssl
などの複数のセキュリティプロトコルを介して Kafka にアクセスできます。
このトピックでは、CREATE ROUTINE LOAD ステートメントの構文、パラメータ、および例について説明します。
NOTE
- Routine Load の適用シナリオ、原則、および基本操作については、Load data using Routine Load を参照してください。
- StarRocks テーブルにデータをロードするには、その StarRocks テーブルに対する INSERT 権限を持つユーザーとしてのみ可能です。INSERT 権限がない場合は、GRANT の指示に従って、使用する StarRocks クラスターに接続するユーザーに INSERT 権限を付与してください。
Syntax
CREATE ROUTINE LOAD <database_name>.<job_name> ON <table_name>
[load_properties]
[job_properties]
FROM data_source
[data_source_properties]
Parameters
database_name
, job_name
, table_name
database_name
オプション。StarRocks データベースの名前。
job_name
必須。Routine Load ジョブの名前。1 つのテーブルは複数の Routine Load ジョブからデータを受け取ることができます。識別可能な情報(例: Kafka トピック名やおおよそのジョブ作成時間)を使用して、意味のある Routine Load ジョブ名を設定することをお勧めします。同じデータベース内で Routine Load ジョブの名前は一意である必要があります。
table_name
必須。データがロードされる StarRocks テーブルの名前。
load_properties
オプション。データのプロパティ。構文:
[COLUMNS TERMINATED BY '<column_separator>'],
[ROWS TERMINATED BY '<row_separator>'],
[COLUMNS (<column1_name>[, <column2_name>, <column_assignment>, ... ])],
[WHERE <expr>],
[PARTITION (<partition1_name>[, <partition2_name>, ...])]
[TEMPORARY PARTITION (<temporary_partition1_name>[, <temporary_partition2_name>, ...])]
COLUMNS TERMINATED BY
CSV 形式のデータのカラム区切り文字。デフォルトのカラム区切り文字は \t
(タブ) です。例えば、COLUMNS TERMINATED BY ","
を使用してカラム区切り文字をカンマに指定できます。
Note
- ここで指定したカラム区切り文字が、取り込むデータのカラム区切り文字と同じであることを確認してください。
- UTF-8 文字列(カンマ、タブ、パイプなど)をテキストデリミタとして使用できますが、その長さは 50 バイトを超えないようにしてください。
- Null 値は
\N
を使用して示されます。例えば、データレコードが 3 つのカラムで構成されており、データレコードが第 1 カラムと第 3 カラムにデータを保持しているが、第 2 カラムにはデータを保持していない場合、この状況では第 2 カラムに\N
を使用して Null 値を示す必要があります。つまり、レコードはa,\N,b
としてコンパイルされる必要があり、a,,b
ではありません。a,,b
はレコードの第 2 カラムが空の文字列を保持していることを示します。
ROWS TERMINATED BY
CSV 形式のデータの行区切り文字。デフォルトの行区切り文字は \n
です。
COLUMNS
ソースデータのカラムと StarRocks テーブルのカラム間のマッピング。詳細については、このトピックの Column mapping を参照してください。
column_name
: ソースデータのカラムが計算なしで StarRocks テーブルのカラムにマッピングできる場合、カラム名を指定するだけで済みます。これらのカラムはマッピングされたカラムと呼ばれます。column_assignment
: ソースデータのカラムが直接 StarRocks テーブルのカラムにマッピングできない場合、カラムの値をデータロード前に関数を使用して計算する必要がある場合、expr
に計算関数を指定する必要があります。これらのカラムは派生カラムと呼ばれます。StarRocks は最初にマッピングされたカラムを解析するため、派生カラムはマッピングされたカラムの後に配置することをお勧めします。
WHERE
フィルター条件。フィルター条件を満たすデータのみが StarRocks にロードされます。例えば、col1
の値が 100
より大きく、col2
の値が 1000
に等しい行のみを取り込みたい場合、WHERE col1 > 100 and col2 = 1000
を使用できます。
NOTE
フィルター条件で指定されたカラムは、ソースカラムまたは派生カラムのいずれかです。
PARTITION
StarRocks テーブルがパーティション p0、p1、p2、p3 に分散されており、StarRocks で p1、p2、p3 のみにデータをロードし、p0 に保存されるデ ータをフィルタリングしたい場合、フィルター条件として PARTITION(p1, p2, p3)
を指定できます。デフォルトでは、このパラメータを指定しない場合、データはすべてのパーティションにロードされます。例:
PARTITION (p1, p2, p3)
TEMPORARY PARTITION
データをロードしたい temporary partition の名前。複数の一時パーティションを指定することができ、カンマ (,) で区 切る必要があります。
job_properties
必須。ロードジョブのプロパティ。構文:
PROPERTIES ("<key1>" = "<value1>"[, "<key2>" = "<value2>" ...])