すべてのプロダクト
Search
ドキュメントセンター

ApsaraDB for SelectDB:Routine Load を使用したデータのインポート

最終更新日:Apr 29, 2026

Routine Load は Kafka トピックからメッセージを継続的に読み取り、ApsaraDB for SelectDB にロードします。一度作成された Routine Load ジョブは永続的に実行され、バッチごとに再送信する必要はありません。

仕組み

Routine Load ジョブを作成すると、フロントエンド (FE) が永続的なロードジョブを生成し、それを複数のタスクに分割します。各タスクは独立したトランザクションであり、Kafka メッセージの有界なスライスを消費します。タスクは、次のしきい値のいずれかに最初に到達した時点で終了します:max_batch_intervalmax_batch_rows、または max_batch_size。タスクがコミットされた後、新しいタスクが直ちにスケジュールされます。

このアーキテクチャにより、ジョブを停止することなく、同時実行数、バッチサイズ、エラー許容度を調整できます。

前提条件

開始前に、以下の要件を満たしていることを確認してください。

  • ApsaraDB for SelectDB インスタンスからアクセス可能な Kafka クラスター(バージョン 0.10.0.0 以降)

  • CSV または JSON 形式のメッセージを含む Kafka トピック(CSV メッセージは末尾の改行を含まない単一行である必要があります)

  • ApsaraDB for SelectDB 内の送信先テーブル

  • ネットワーク接続性:Kafka クラスターがパブリックネットワーク環境にデプロイされている場合、ApsaraDB for SelectDB インスタンスは Kafka ブローカーに接続するためにパブリックネットワークアクセスを備えている必要があります。詳細については、「データソースのネットワーク問題の解決」をご参照ください。

注意事項

Kafka 0.10.0.0 以降はデフォルトでサポートされています。古い Kafka バージョン(0.9.0、0.8.2、0.8.1、または 0.8.0)を使用する場合は、次のいずれかの方法を採用してください。

  • バックエンド (BE) 構成で kafka_broker_version_fallback を対象の Kafka バージョンに設定します。

  • Routine Load ジョブ作成時に property.broker.version.fallback を設定します。

Kafka バージョン 0.10.0.0 より前のバージョンでは、一部の機能が利用できません。たとえば、時間ベースのパーティションオフセットはサポートされていません。

クイックスタート

この例では、Kafka から CSV データを SelectDB テーブルにロードします。

ステップ 1:Kafka 内のサンプルデータを確認します

1,Alice,30
2,Bob,25
3,Carol,35

ステップ 2:送信先テーブルを作成します

CREATE TABLE testdb.users (
    id      INT         NOT NULL,
    name    VARCHAR(50),
    age     INT
)
DUPLICATE KEY(id)
DISTRIBUTED BY HASH(id) BUCKETS 4
PROPERTIES ("replication_num" = "1");

ステップ 3:Routine Load ジョブを作成します

CREATE ROUTINE LOAD testdb.load_users ON users
COLUMNS TERMINATED BY ",",
COLUMNS(id, name, age)
PROPERTIES (
    "desired_concurrent_number" = "3",
    "max_batch_interval"        = "20",
    "max_batch_rows"            = "300000",
    "max_batch_size"            = "209715200",
    "strict_mode"               = "false"
)
FROM KAFKA (
    "kafka_broker_list"              = "broker1:9092,broker2:9092",
    "kafka_topic"                    = "users",
    "property.kafka_default_offsets" = "OFFSET_BEGINNING"
);

ステップ 4:ジョブのステータスを確認します

SHOW ROUTINE LOAD FOR testdb.load_users;

Routine Load ジョブの作成

構文

CREATE ROUTINE LOAD [db.]job_name ON tbl_name
[merge_type]
[load_properties]
[job_properties]
FROM data_source [data_source_properties]

パラメーター

パラメーター

説明

[db.]job_name

ジョブ名。データベース内では、同じ名前のジョブを同時に 1 つしか実行できません。

tbl_name

送信先テーブル名。

merge_type

データマージモード。デフォルトは APPEND(標準的な追加)です。Unique Key モデルテーブルの場合のみ、MERGEDELETE ON が必要)または DELETE(インポートされたすべての行を削除)に設定できます。

load_properties

インポートデータの処理に関するパラメーター。詳細については、「load_properties パラメーター」をご参照ください。

job_properties

ジョブレベルのパラメーター。詳細については、「job_properties パラメーター」をご参照ください。

data_source_properties

Kafka 接続パラメーター。詳細については、「data_source_properties パラメーター」をご参照ください。

load_properties パラメーター

[column_separator],
[columns_mapping],
[preceding_filter],
[where_predicates],
[partitions],
[DELETE ON],
[ORDER BY]

パラメーター

説明

column_separator

COLUMNS TERMINATED BY ","

カラム区切り文字。デフォルトは \t です。

columns_mapping

(k1, k2, tmpk1, k3=tmpk1+1)

ソース列を送信先列にマッピングし、変換を適用します。詳細については、「ソースデータの変換」をご参照ください。

preceding_filter

カラムマッピングの前にソースデータをフィルタリングします。詳細については、「ソースデータの変換」をご参照ください。

where_predicates

WHERE k1 > 100 AND k2 = 1000

カラムマッピング後に、行をフィルタリングします。詳細については、「ソースデータの変換」をご参照ください。

partitions

PARTITION(p1, p2, p3)

ターゲットパーティション。省略した場合、データは自動的に一致するパーティションにルーティングされます。

DELETE ON

DELETE ON v3 > 100

Delete Flag カラムの式を指定します。merge_typeMERGE の場合に必須です。Unique Key モデルテーブルでのみ有効です。

ORDER BY

インポート中にレコード順序を維持するためのシーケンスカラムを指定します。Unique Key モデルテーブルでのみ有効です。

job_properties パラメーター

PROPERTIES (
    "key1" = "val1",
    "key2" = "val2"
)
タスクは、max_batch_intervalmax_batch_rows、または max_batch_size のいずれかに最初に到達した時点で終了します。

パラメーター

デフォルト

有効範囲

説明

desired_concurrent_number

3

整数 > 0

ジョブで同時に実行できる最大タスク数。実際の同時実行数はクラスターノード数、負荷、データソースに依存します。最適なスループットを得るには、この値を クラスターコア数 / 16 に設定してください。

max_batch_interval

10

5~60 秒

タスクあたりの最大実行時間。

max_batch_rows

200000

≥ 200000

タスクあたりの最大読み取り行数。

max_batch_size

104857600(100 MB)

100 MB~1 GB

タスクあたりの最大読み取りバイト数。

max_error_number

0

整数 > 0

サンプリングウィンドウ(10 × max_batch_rows)内で許容される最大エラー行数。この値を超えると、ジョブは一時停止し、手動での介入が必要になります。WHERE 条件でフィルターされた行はエラーとしてカウントされません。

strict_mode

false

true / false

true の場合、NOT NULL のソース値が送信先カラムで NULL に変換される行はフィルターされます。関数によって導出されたカラムには適用されません。

timezone

セッションタイムゾーン

ジョブ内のタイムゾーン関連関数すべてに適用されるタイムゾーン(例:"Africa/Abidjan")。

format

CSV

CSV / json

メッセージフォーマット。

jsonpaths

JSON 形式データの JSON フィールド抽出パス(例:"[\"$.k2\",\"$.k1\"]")。

strip_outer_array

false

true / false

true の場合、トップレベルの JSON 配列を複数のレコードとして扱います。

json_root

JSON 抽出のルートノードパス(例:"$.RECORDS")。

send_batch_parallelism

バッチデータ送信の最大並列スレッド数。BE 構成の max_send_batch_parallelism_per_job で上限が制限されます。

load_to_single_tablet

false

true / false

true の場合、パーティションごとに単一のタブレットにデータをロードします。Duplicate Key モデルテーブルでランダムパーティショニングを使用している場合にのみ適用されます。

Strict モードの動作

Strict モードは、型変換失敗時の処理方法を制御します。

TINYINT カラム(NULL 許容)へのインポート:

ソースデータの型

例となる値

変換結果

Strict モード

結果

NULL

\N

true または false

NULL

NOT NULL

aaa または 2000

NULL

true

フィルター(無効)

NOT NULL

aaa

NULL

false

NULL

NOT NULL

1

1

true または false

インポート済み

DECIMAL(1,0) カラム(NULL 許容)へのインポート:

ソースデータの型

例となる値

変換結果

Strict モード

結果

NULL

\N

true または false

NULL

NOT NULL

aaa

NULL

true

フィルター(無効)

NOT NULL

aaa

NULL

false

NULL

NOT NULL

1 または 10

1

true または false

インポート

10 は DECIMAL(1,0) の範囲を超えていますが、Strict モードではフィルターされません。これは、値自体が型変換を通過するためです。この値は、抽出・変換・書き出し(ETL)プロセス中に後からフィルターされます。

data_source_properties パラメーター

FROM KAFKA (
    "key1" = "val1",
    "key2" = "val2"
)

パラメーター

説明

kafka_broker_list

ブローカーアドレス。形式:host:port。複数のブローカーはカンマで区切ります。例:"broker1:9092,broker2:9092"

kafka_topic

サブスクライブする Kafka トピック。

kafka_partitions

サブスクライブするパーティション ID をカンマ区切りで指定します。例:"0,1,2,3"

kafka_offsets

kafka_partitions にリストされた各パーティションの開始オフセット。エントリ数は一致している必要があります。数値オフセット、OFFSET_BEGINNINGOFFSET_END、または yyyy-MM-dd HH:mm:ss 形式のタイムスタンプを受け入れます。省略した場合、すべてのパーティションの終端オフセットがデフォルトで使用されます。

property.*

カスタム Kafka クライアントプロパティ。Kafka シェルの --property と同等です。ファイルベースの値の場合は、FILE: をプレフィックスとして付けます(例:"FILE:ca.pem")。

重要

時間ベースのオフセットと数値オフセットは、同じ kafka_offsets 値内で混在させることはできません。

パーティションとオフセットの組み合わせ

kafka_partitionskafka_offsets、および property.kafka_default_offsets は次のように相互作用します。

方法

kafka_partitions

kafka_offsets

property.kafka_default_offsets

動作

1

未設定

未設定

未設定

すべてのパーティションを終端オフセットから開始します。

2

未設定

未設定

設定済み

すべてのパーティションを指定されたデフォルトオフセットから開始します。

3

設定

未設定

未設定

指定されたパーティションを終端オフセットから開始します。

4

設定済み

設定

未設定

指定されたパーティションを指定されたオフセットから開始します。

5

設定済み

未設定

設定済み

指定されたパーティションを指定されたデフォルトオフセットから開始します。

例 — オフセットが混在するパーティション:

"kafka_partitions" = "0,1,2,3",
"kafka_offsets"    = "101,0,OFFSET_BEGINNING,OFFSET_END"

例 — タイムスタンプベースのオフセットを持つパーティション:

"kafka_partitions" = "0,1,2,3",
"kafka_offsets"    = "2021-05-22 11:00:00,2021-05-22 11:00:00,2021-05-22 11:00:00,2021-05-22 11:00:00"

CSV データのロード

  1. 送信先テーブルを作成します。

    CREATE TABLE test_table (
        id      INT,
        name    VARCHAR(50),
        age     INT,
        address VARCHAR(50),
        url     VARCHAR(500)
    )
    UNIQUE KEY(`id`, `name`)
    DISTRIBUTED BY HASH(id) BUCKETS 4
    PROPERTIES ("replication_num" = "1");
  2. すべてのパーティションの先頭から読み取る Routine Load ジョブを作成します。

    CREATE ROUTINE LOAD example_db.test1 ON test_table
    COLUMNS TERMINATED BY ",",
    COLUMNS(k1, k2, k3, v1, v2, v3 = k1 * 100)
    PROPERTIES (
        "desired_concurrent_number" = "3",
        "max_batch_interval"        = "20",
        "max_batch_rows"            = "300000",
        "max_batch_size"            = "209715200",
        "strict_mode"               = "false"
    )
    FROM KAFKA (
        "kafka_broker_list"              = "broker1:9092,broker2:9092,broker3:9092",
        "kafka_topic"                    = "my_topic",
        "property.kafka_default_offsets" = "OFFSET_BEGINNING"
    );
  3. Strict モードを有効にして Routine Load ジョブを作成します。

    CREATE ROUTINE LOAD example_db.test2 ON test_table
    COLUMNS TERMINATED BY ",",
    COLUMNS(k1, k2, k3, v1, v2, v3 = k1 * 100)
    PROPERTIES (
        "desired_concurrent_number" = "3",
        "max_batch_interval"        = "20",
        "max_batch_rows"            = "300000",
        "max_batch_size"            = "209715200",
        "strict_mode"               = "true"
    )
    FROM KAFKA (
        "kafka_broker_list"              = "broker1:9092,broker2:9092,broker3:9092",
        "kafka_topic"                    = "my_topic",
        "property.kafka_default_offsets" = "OFFSET_BEGINNING"
    );
  4. 特定のタイムスタンプから消費を開始します。

    CREATE ROUTINE LOAD example_db.test4 ON test_table
    PROPERTIES (
        "desired_concurrent_number" = "3",
        "max_batch_interval"        = "30",
        "max_batch_rows"            = "300000",
        "max_batch_size"            = "209715200"
    )
    FROM KAFKA (
        "kafka_broker_list"             = "broker1:9092,broker2:9092",
        "kafka_topic"                   = "my_topic",
        "property.kafka_default_offset" = "2024-01-21 10:00:00"
    );

JSON データのロード

Routine Load は次の 2 種類の JSON メッセージ構造をサポートしています。

  • 単一の JSON オブジェクト — メッセージごとに 1 レコード:

    {"key1":"value1","key2":"value2","key3":"value3"}
  • JSON 配列 — メッセージごとに複数レコード:

    [
        {"key1":"value11","key2":"value12","key3":"value13","key4":14},
        {"key1":"value21","key2":"value22","key3":"value23","key4":24}
    ]

複数テーブルインポートモードでは、各メッセージの先頭に送信先テーブル名を付加します。

table_name|{"key1":"value1","key2":"value2","key3":"value3"}

例:JSON データのロード

  1. 送信先テーブルを作成します。

    CREATE TABLE `example_tbl` (
        `category`  VARCHAR(24)  NULL,
        `author`    VARCHAR(24)  NULL,
        `timestamp` BIGINT(20)   NULL,
        `dt`        INT(11)      NULL,
        `price`     DOUBLE REPLACE
    ) ENGINE=OLAP
    AGGREGATE KEY(`category`, `author`, `timestamp`, `dt`)
    PARTITION BY RANGE(`dt`) (
        PARTITION p0        VALUES [("-2147483648"), ("20230509")),
        PARTITION p20200509 VALUES [("20230509"), ("20231010")),
        PARTITION p20200510 VALUES [("20231010"), ("20231211")),
        PARTITION p20200511 VALUES [("20231211"), ("20240512"))
    )
    DISTRIBUTED BY HASH(`category`, `author`, `timestamp`) BUCKETS 4;
  2. 両方のメッセージタイプを Kafka トピックに公開します。

    {"category":"value1331","author":"value1233","timestamp":1700346050,"price":1413}
    [
        {"category":"value13z2","author":"vaelue13","timestamp":1705645251,"price":14330},
        {"category":"lvalue211","author":"lvalue122","timestamp":1684448450,"price":24440}
    ]
  3. シンプルモードでロードします(フィールド名がカラム名と一致)。

    CREATE ROUTINE LOAD example_db.test_json_label_1 ON example_tbl
    COLUMNS(category, price, author)
    PROPERTIES (
        "desired_concurrent_number" = "3",
        "max_batch_interval"        = "20",
        "max_batch_rows"            = "300000",
        "max_batch_size"            = "209715200",
        "strict_mode"               = "false",
        "format"                    = "json"
    )
    FROM KAFKA (
        "kafka_broker_list"  = "broker1:9092,broker2:9092,broker3:9092",
        "kafka_topic"        = "my_topic",
        "kafka_partitions"   = "0,1,2",
        "kafka_offsets"      = "0,0,0"
    );
  4. 明示的な JSON パス抽出と外側の配列のストリップを伴ってロードします。

    dt カラムはソースデータに存在しません。その値は、COLUMNS 句内の timestamp を使用して dt=from_unixtime(timestamp,'%Y%m%d') で導出されます。
    CREATE ROUTINE LOAD example_db.test_json_label_3 ON example_tbl
    COLUMNS(category, author, price, timestamp, dt=from_unixtime(timestamp, '%Y%m%d'))
    PROPERTIES (
        "desired_concurrent_number" = "3",
        "max_batch_interval"        = "20",
        "max_batch_rows"            = "300000",
        "max_batch_size"            = "209715200",
        "strict_mode"               = "false",
        "format"                    = "json",
        "jsonpaths"                 = "[\"$.category\",\"$.author\",\"$.price\",\"$.timestamp\"]",
        "strip_outer_array"         = "true"
    )
    FROM KAFKA (
        "kafka_broker_list"  = "broker1:9092,broker2:9092,broker3:9092",
        "kafka_topic"        = "my_topic",
        "kafka_partitions"   = "0,1,2",
        "kafka_offsets"      = "0,0,0"
    );

認証付き Kafka クラスターへの接続

ApsaraDB for SelectDB は Kafka への接続に librdkafka C++ クライアントライブラリを使用します。サポートされている構成プロパティについては、「librdkafka 構成リファレンス」をご参照ください。

SSL 認証

必要な証明書ファイルを最初にアップロードしてから、Routine Load ジョブを作成します。

  1. 証明書ファイルをアップロードします。

    CREATE FILE "ca.pem"     PROPERTIES ("url" = "https://example_url/kafka-key/ca.pem",     "catalog" = "kafka");
    CREATE FILE "client.key" PROPERTIES ("url" = "https://example_url/kafka-key/client.key", "catalog" = "kafka");
    CREATE FILE "client.pem" PROPERTIES ("url" = "https://example_url/kafka-key/client.pem", "catalog" = "kafka");
  2. Routine Load ジョブを作成します。

    プロパティ

    必須

    説明

    property.security.protocol

    常に

    ssl に設定します。

    property.ssl.ca.location

    常に

    Kafka ブローカーの公開鍵を認証する CA 証明書のパス。

    property.ssl.certificate.location

    Kafka サーバーでクライアント認証が有効になっている場合のみ

    クライアント公開鍵証明書のパス。

    property.ssl.key.location

    Kafka サーバーでクライアント認証が有効になっている場合のみ

    クライアント秘密鍵ファイルのパス。

    property.ssl.key.password

    Kafka サーバーでクライアント認証が有効になっている場合のみ

    クライアント秘密鍵のパスワード。

    CREATE ROUTINE LOAD db1.job1 ON tbl1
    PROPERTIES (
        "desired_concurrent_number" = "1"
    )
    FROM KAFKA (
        "kafka_broker_list"                 = "broker1:9091,broker2:9091",
        "kafka_topic"                       = "my_topic",
        "property.security.protocol"        = "ssl",
        "property.ssl.ca.location"          = "FILE:ca.pem",
        "property.ssl.certificate.location" = "FILE:client.pem",
        "property.ssl.key.location"         = "FILE:client.key",
        "property.ssl.key.password"         = "abcdefg"
    );

PLAIN 認証

CREATE ROUTINE LOAD db1.job1 ON tbl1
PROPERTIES (
    "desired_concurrent_number" = "1"
)
FROM KAFKA (
    "kafka_broker_list"          = "broker1:9092,broker2:9092",
    "kafka_topic"                = "my_topic",
    "property.security.protocol" = "SASL_PLAINTEXT",
    "property.sasl.mechanism"    = "PLAIN",
    "property.sasl.username"     = "admin",
    "property.sasl.password"     = "admin"
);

プロパティ

説明

property.security.protocol

SASL_PLAINTEXT

簡易認証およびセキュリティ層(SASL)プレーンテキストを使用します。

property.sasl.mechanism

PLAIN

SASL メカニズム。

property.sasl.username

SASL ユーザー名。

property.sasl.password

SASL パスワード。

Kerberos 認証

ジョブを作成する前に、ApsaraDB for SelectDB クラスターのすべてのノードに Kerberos クライアント kinit をデプロイし、krb5.conf を構成して、キー配布センター(KDC)サービスを指定する必要があります。

CREATE ROUTINE LOAD db1.job1 ON tbl1
PROPERTIES (
    "desired_concurrent_number" = "1"
)
FROM KAFKA (
    "kafka_broker_list"                   = "broker1:9092,broker2:9092",
    "kafka_topic"                         = "my_topic",
    "property.security.protocol"          = "SASL_PLAINTEXT",
    "property.sasl.kerberos.service.name" = "kafka",
    "property.sasl.kerberos.keytab"       = "/etc/krb5.keytab",
    "property.sasl.kerberos.principal"    = "id@your.com"
);

プロパティ

説明

property.security.protocol

SASL_PLAINTEXT に設定します。

property.sasl.kerberos.service.name

Kafka ブローカーサービス名。

property.sasl.kerberos.keytab

ローカル .keytab ファイルの絶対パス。ApsaraDB for SelectDB プロセスはこのファイルへの読み取りアクセス権を持っている必要があります。

property.sasl.kerberos.principal

Kafka クラスターに接続するために使用する Kerberos プリンシパル。

Routine Load ジョブの変更

PAUSED 状態のジョブのみ変更できます。

構文

ALTER ROUTINE LOAD FOR [db.]job_name
[job_properties]
FROM data_source
[data_source_properties]

変更可能なパラメーター

job_properties — 次のパラメーターを変更できます。

  • desired_concurrent_number

  • max_error_number

  • max_batch_interval

  • max_batch_rows

  • max_batch_size

  • jsonpaths

  • json_root

  • strip_outer_array

  • strict_mode

  • timezone

  • num_as_string

  • fuzzy_parse

data_source_properties — Kafka プロパティのみ変更できます。

  • kafka_partitions

  • kafka_offsets

  • kafka_broker_list

  • kafka_topic

  • カスタムプロパティ(例:property.group.id

kafka_partitions および kafka_offsets は、すでに消費中のパーティションのオフセットのみを変更できます。新しいパーティションの追加はサポートされていません。

ジョブ db1.label1 の同時実行数を 1 に変更します。

ALTER ROUTINE LOAD FOR db1.label1
PROPERTIES (
    "desired_concurrent_number" = "1"
);

同時実行数を 10 に変更し、パーティションオフセットとコンシューマーグループ ID を調整します。

ALTER ROUTINE LOAD FOR db1.label1
PROPERTIES (
    "desired_concurrent_number" = "10"
)
FROM KAFKA (
    "kafka_partitions"  = "0, 1, 2",
    "kafka_offsets"     = "100, 200, 100",
    "property.group.id" = "new_group"
);

Routine Load ジョブの一時停止

構文

PAUSE ROUTINE LOAD FOR [db.]job_name;
PAUSE ALL ROUTINE LOAD;

ジョブ test1 を一時停止します。

PAUSE ROUTINE LOAD FOR test1;

現在のデータベース内のすべての Routine Load ジョブを一時停止します。

PAUSE ALL ROUTINE LOAD;

Routine Load ジョブの再開

再開されたジョブは、最後にコミットされたオフセットから消費を継続します。

構文

RESUME ROUTINE LOAD FOR [db.]job_name;
RESUME ALL ROUTINE LOAD;

ジョブ test1 を再開します。

RESUME ROUTINE LOAD FOR test1;

現在のデータベース内で一時停止中のすべての Routine Load ジョブを再開します。

RESUME ALL ROUTINE LOAD;

Routine Load ジョブの停止

停止されたジョブは再起動できず、停止前にインポートされたデータはロールバックできません。

構文

STOP ROUTINE LOAD FOR [db.]job_name;

STOP ROUTINE LOAD FOR test1;

Routine Load ジョブのステータス確認

構文

SHOW [ALL] ROUTINE LOAD [FOR [db.]job_name];

ALL を指定しない場合、実行中および一時停止中のジョブのみが返されます。ALL を指定すると、停止およびキャンセルされたジョブも含まれます。

出力フィールド

フィールド

説明

Id

ApsaraDB for SelectDB によって自動的に割り当てられるジョブ ID。

Name

ジョブ名。

CreateTime

ジョブが作成された時刻。

PauseTime

ジョブが最後に一時停止された時刻。

EndTime

ジョブが終了した時刻(停止またはキャンセル)。

State

現在のジョブ状態:NEED_SCHEDULEDRUNNINGPAUSEDSTOPPED、または CANCELLED

DataSourceType

データソースタイプ。Routine Load ジョブでは常に KAFKA です。

CurrentTaskNum

現在実行中のタスク数。

ErrorLogUrls

エラーログを指す URL。ブラウザで任意の URL を開くと、無効な行の詳細を確認できます。

test1 という名前のすべてのジョブ(停止およびキャンセルされたものを含む)を照会します。

SHOW ALL ROUTINE LOAD FOR test1;

test1 という名前で実行中のジョブのみを照会します。

SHOW ROUTINE LOAD FOR test1;

example_db 内のすべてのジョブ(停止およびキャンセルされたものを含む)を照会します。

USE example_db;
SHOW ALL ROUTINE LOAD;

example_db 内で実行中のジョブのみを照会します。

USE example_db;
SHOW ROUTINE LOAD;

データベースと名前で特定のジョブを照会します。

SHOW ROUTINE LOAD FOR example_db.test1;

システム構成

次の FE および BE パラメーターは Routine Load の動作に影響します。すべての FE パラメーターはランタイムで変更可能です。

パラメーター

スコープ

デフォルト

説明

max_routine_load_task_concurrent_num

FE

5

Routine Load ジョブで同時に実行できる最大タスク数。デフォルト値を推奨します。値を高く設定しすぎると、クラスターリソースが枯渇する可能性があります。

max_routine_load_task_num_per_be

FE

5

各 BE ノードで同時に実行できる最大タスク数。デフォルト値を推奨します。

max_routine_load_job_num

FE

100

Routine Load ジョブの最大数(NEED_SCHEDULEDRUNNING、または PAUSED 状態)。この制限に達すると、新しいジョブを作成できなくなります。

max_consumer_num_per_group

BE

3

タスクごとに生成される最大コンシューマー数。たとえば、6 つの Kafka パーティションを消費するタスクは 3 つのコンシューマーを生成し、それぞれが 2 つのパーティションを処理します。

max_tolerable_backend_down_num

FE

0

自動ジョブ再スケジューリングがブロックされる前に停止してもよい BE ノードの最大数。値 0 は、再スケジューリングのためにすべての BE ノードが稼働している必要があることを意味します。

period_of_auto_resume_min

FE

5

ApsaraDB for SelectDB は、この時間枠内で一時停止中のジョブの再スケジューリングを最大 3 回試行します。3 回失敗すると、ジョブはロックされ、再開するには手動での介入が必要になります。

その他の考慮事項

Routine Load とスキーマ変更

  • Routine Load ジョブは SCHEMA CHANGE または ROLLUP 操作をブロックしません。

  • SCHEMA CHANGE 後、ソースカラムが送信先テーブルと一致しなくなった場合、エラー行数が増加し、ジョブが一時停止する可能性があります。これを防ぐには、COLUMNS 句で明示的なカラムマッピングを使用し、送信先カラムを NULLABLE または DEFAULT 値付きで定義してください。

  • パーティションが削除された場合、ターゲットパーティションが見つからないため、ジョブは一時停止します。

Routine Load と他の書き込み操作

  • Routine Load は LOAD または INSERT 操作と競合しません。

  • テーブルに対して DELETE 操作を実行する前に、そのテーブルの Routine Load ジョブを一時停止し、進行中のすべてのタスクが完了するのを待ってください。

Routine Load とテーブルまたはデータベースの削除

送信先テーブルまたはデータベースが削除された場合、Routine Load ジョブは自動的にキャンセルされます。

Kafka トピックの自動作成

CREATE ROUTINE LOAD で指定されたトピックが存在しない場合、Kafka ブローカーは auto.create.topics.enable 設定に基づいてトピックを自動作成することがあります。

  • true:Kafka は num.partitions パーティションでトピックを自動作成します。ジョブはすぐにそこから読み取りを開始します。

  • false:トピックが作成され、データが利用可能になるまでジョブは一時停止します。

ネットワークアクセス要件

  • kafka_broker_list にリストされたすべてのブローカーは、ApsaraDB for SelectDB クラスターから到達可能である必要があります。

  • Kafka で advertised.listeners が構成されている場合、アドバタイズされたアドレスも到達可能である必要があります。

STOPPED と PAUSED の違い

状態

動作

PAUSED

RESUME ROUTINE LOAD でジョブを再開できます。

STOPPED

ジョブは永久に終了し、FE によって定期的にクリアされます。再起動できません。