StarRocks コネクタの使用方法について説明します。
背景情報
StarRocks は、次世代の Massively Parallel Processing (MPP) データウェアハウスであり、すべてのシナリオで非常に高速なパフォーマンスと統一された分析エクスペリエンスを提供します。StarRocks には、次の利点があります。
-
StarRocks は MySQL プロトコルと互換性があり、MySQL クライアントと一般的なビジネスインテリジェンス (BI) ツールを使用してデータに接続し、分析できます。
-
StarRocks は分散アーキテクチャを使用しています。
-
データテーブルを水平にパーティション分割し、複数のレプリカで保存します。
-
クラスターは柔軟に拡張でき、最大 10 ペタバイト (PB) のデータを分析できます。
-
MPP フレームワークを使用して並列計算を高速化します。
-
複数のレプリカをサポートし、フォールトトレランスを提供します。
-
Flink コネクタはデータをキャッシュし、Stream Load を使用してバッチで結果テーブルに書き込みます。ソーステーブルからは、バッチでデータをフェッチして読み取ります。次の表に、StarRocks コネクタの機能を示します。
|
カテゴリ |
説明 |
|
サポートされるタイプ |
ソーステーブル、ディメンションテーブル、結果テーブル、データインジェストターゲット |
|
実行モード |
ストリーミングモードとバッチモード |
|
データフォーマット |
CSV |
|
コネクタ固有のメトリック |
なし |
|
API タイプ |
DataStream、SQL、およびデータインジェスト用の YAML |
|
結果テーブルでの更新/削除のサポート |
はい |
前提条件
E-MapReduce にデプロイされた StarRocks クラスター、または Elastic Compute Service (ECS) 上のセルフマネージドの StarRocks クラスターが必要です。
制限事項
-
Ververica Runtime (VVR) 11.1 以降のみがディメンションテーブルとの結合をサポートします。
-
ネットワークアクセスの制限を回避するには、次の StarRocks クラスターポートをセキュリティグループまたはファイアウォールのホワイトリストに追加してください:9030、8030、8040、9060、8060、9020。
-
ターゲットの StarRocks テーブルに非表示の生成列が含まれている場合、Flink ジョブでは書き込む実際の物理列のみを宣言し、生成列のフィールドは除外してください。StarRocks の式パーティショニングによって自動的に作成される非表示の生成列 (例:
__generated_partition_column_0) は、外部からの書き込みを受け付けません。デフォルトでは、コネクタは完全なスキーマに基づいて書き込みリクエストを構築するため、ジョブが失敗します。StarRocks の生成列の詳細については、「生成列」をご参照ください。
SQL
特徴
E-MapReduce 上の StarRocks は、CREATE TABLE AS SELECT (CTAS) および CREATE DATABASE AS SELECT (CDAS) 文をサポートします。CTAS は単一テーブルのスキーマとデータを同期し、CDAS はデータベース全体または同じデータベース内の複数のテーブルを同期します。詳細については、「Realtime Compute for Apache Flink の CTAS および CDAS 文を使用して MySQL データベースから StarRocks にデータを同期する」をご参照ください。
構文
CREATE TABLE USER_RESULT(
name VARCHAR,
score BIGINT
) WITH (
'connector' = 'starrocks',
'jdbc-url'='jdbc:mysql://fe1_ip:query_port,fe2_ip:query_port,fe3_ip:query_port?xxxxx',
'load-url'='fe1_ip:http_port;fe2_ip:http_port;fe3_ip:http_port',
'database-name' = 'xxx',
'table-name' = 'xxx',
'username' = 'xxx',
'password' = 'xxx'
);
パラメーター
|
タイプ |
パラメーター |
説明 |
タイプ |
必須 |
デフォルト |
備考 |
|
一般 |
connector |
使用するコネクタを指定します。 |
String |
はい |
— |
値は |
|
jdbc-url |
Java Database Connectivity (JDBC) URL。 |
String |
はい |
— |
FE の IP アドレスと JDBC ポートを |
|
|
database-name |
StarRocks データベースの名前。 |
String |
はい |
— |
— |
|
|
table-name |
StarRocks テーブルの名前。 |
String |
はい |
— |
— |
|
|
username |
StarRocks に接続するためのユーザー名。 |
String |
はい |
— |
— |
|
|
password |
StarRocks に接続するためのパスワード。 |
String |
はい |
— |
— |
|
|
starrocks.create.table.properties |
自動テーブル作成のプロパティを指定します。 |
String |
いいえ |
— |
エンジンの種類やレプリカ数など、初期のテーブルプロパティを指定します。例:`'starrocks.create.table.properties' = 'buckets 8'` または `'starrocks.create.table.properties' = 'replication_num=1'`。 |
|
|
ソース固有 |
scan-url |
データスキャン URL。 |
String |
いいえ |
— |
FE の IP アドレスと HTTP ポートを指定します。フォーマット: 説明
複数の IP アドレスとポートを指定するには、セミコロン (;) で区切ります。 |
|
scan.connect.timeout-ms |
このタイムアウト内に接続が確立されない場合、コネクタはエラーを報告します。 |
String |
いいえ |
1000 |
単位:ミリ秒。 |
|
|
scan.params.keep-alive-min |
クエリタスクのキープアライブ期間。 |
String |
いいえ |
10 |
— |
|
|
scan.params.query-timeout-s |
クエリタスクのタイムアウト。 この期間内に結果が返されない場合、システムはクエリタスクを停止します。 |
String |
いいえ |
600 |
単位:秒。 |
|
|
scan.params.mem-limit-byte |
BE ノード上の単一クエリのメモリ制限。 |
String |
いいえ |
1073741824 (1 GB) |
単位:バイト。 |
|
|
scan.max-retries |
失敗したクエリの最大再試行回数。 この制限を超えると、コネクタはエラーを報告します。 |
String |
いいえ |
1 |
— |
|
|
sink 固有 |
load-url |
データインポート URL。 |
String |
はい |
— |
FE の IP アドレスと HTTP ポートを 説明
複数の IP アドレスとポートを指定するには、セミコロン (;) で区切ります。 |
|
sink.semantic |
書き込みの配信セマンティクス。 |
String |
いいえ |
at-least-once |
有効な値:
|
|
|
sink.buffer-flush.max-bytes |
フラッシュ前にバッファーに格納するデータの最大量。 |
String |
いいえ |
94371840 (90 MB) |
有効値:64 MB から 10 GB。 |
|
|
sink.buffer-flush.max-rows |
フラッシュ前にバッファーに格納する行の最大数。 |
String |
いいえ |
500000 |
有効値:1,000 から 5,000,000。 |
|
|
sink.buffer-flush.interval-ms |
バッファーのフラッシュ間隔。 |
String |
いいえ |
300000 |
有効値:1,000 ms から 3,600,000 ms。 |
|
|
sink.max-retries |
失敗した書き込みの最大再試行回数。 |
String |
いいえ |
3 |
有効値:0 から 1000。 |
|
|
sink.connect.timeout-ms |
StarRocks への接続タイムアウト。 |
String |
いいえ |
1000 |
有効値:100 から 60,000。単位:ミリ秒。 |
|
|
sink.properties.* |
sink の追加の Stream Load プロパティ。 |
String |
いいえ |
— |
これらのパラメーターは Stream Load の動作を制御します。例えば、 |
|
|
ディメンション固有 |
lookup.cache.enabled |
ディメンションテーブルのキャッシュを有効にするかどうかを指定します。 |
Boolean |
いいえ |
true |
有効な値:
重要
|
データ型のマッピング
|
StarRocks データ型 |
Flink データ型 |
|
NULL |
NULL |
|
BOOLEAN |
BOOLEAN |
|
TINYINT |
TINYINT |
|
SMALLINT |
SMALLINT |
|
INT |
INT |
|
BIGINT |
BIGINT |
|
BIGINT UNSIGNED 説明
Realtime Compute for Apache Flink エンジン VVR 8.0.10 以降が必要です。 |
DECIMAL(20,0) |
|
LARGEINT |
DECIMAL(20,0) |
|
FLOAT |
FLOAT |
|
DOUBLE |
DOUBLE |
|
DATE |
DATE |
|
DATETIME |
TIMESTAMP |
|
DECIMAL |
DECIMAL |
|
DECIMALV2 |
DECIMAL |
|
DECIMAL32 |
DECIMAL |
|
DECIMAL64 |
DECIMAL |
|
DECIMAL128 |
DECIMAL |
|
CHAR(m) 説明
|
CHAR(n) |
|
VARCHAR(m) 説明
|
CHAR(n) |
|
VARCHAR |
STRING |
|
VARBINARY 説明
Realtime Compute for Apache Flink エンジン VVR 8.0.10 以降が必要です。 |
VARBINARY |
コード例
CREATE TEMPORARY TABLE IF NOT EXISTS `runoob_tbl_source` (
`runoob_id` BIGINT NOT NULL,
`runoob_title` STRING NOT NULL,
`runoob_author` STRING NOT NULL,
`submission_date` DATE NULL
) WITH (
'connector' = 'starrocks',
'jdbc-url' = 'jdbc:mysql://ip:9030',
'scan-url' = 'ip:18030',
'database-name' = 'db_name',
'table-name' = 'table_name',
'password' = 'xxxxxxx',
'username' = 'xxxxx'
);
CREATE TEMPORARY TABLE IF NOT EXISTS `runoob_tbl_sink` (
`runoob_id` BIGINT NOT NULL,
`runoob_title` STRING NOT NULL,
`runoob_author` STRING NOT NULL,
`submission_date` DATE NULL
PRIMARY KEY(`runoob_id`)
NOT ENFORCED
) WITH (
'jdbc-url' = 'jdbc:mysql://ip:9030',
'connector' = 'starrocks',
'load-url' = 'ip:18030',
'database-name' = 'db_name',
'table-name' = 'table_name',
'password' = 'xxxxxxx',
'username' = 'xxxx',
'sink.buffer-flush.interval-ms' = '5000'
);
INSERT INTO runoob_tbl_sink SELECT * FROM runoob_tbl_source;
StarRocks ではプライマリキー列を NULLABLE にできます。しかし、Flink は null 許容列を含むプライマリキーをサポートしていません。Flink のデータ整合性モデルでは、プライマリキーは一意で null 非許容である必要があります。そうでない場合、Flink はエラー Invalid primary key. Column 'xxx' is nullable をスローします。詳細については、「「Invalid primary key. Column 'xxx' is nullable.」エラー」をご参照ください。
データインジェスト
StarRocks パイプラインコネクタを使用して、アップストリームデータソースから外部の StarRocks データベース にデータレコードとスキーマ変更を書き込みます。StarRocks コネクタは、コミュニティ版と、Alibaba Cloud のフルマネージド EMR Serverless StarRocks の両方をサポートしています。
特徴
-
データベースとテーブルの自動作成。
アップストリームのデータベースまたはテーブルがダウンストリームの StarRocks インスタンスに存在しない場合、コネクタはそれを自動的に作成します。
table.create.properties.*パラメーターを使用して、自動テーブル作成のオプションを構成できます。 -
スキーマ変更の同期。
StarRocks コネクタは、CreateTableEvent、AddColumnEvent、および DropColumnEvent イベントをダウンストリームデータベースに自動的に適用します。
-
VVR 11.1 以降は、互換性のある列の型の変更をサポートします。詳細については、「ALTER TABLE | StarRocks」をご参照ください。
注意事項
-
同期される各テーブルにはプライマリキーが必要です。プライマリキーのないテーブルの場合、データをダウンストリームに書き込むには、
transformブロックでプライマリキーを指定する必要があります。例:transform: - source-table: ... primary-keys: id, ... -
自動作成されたテーブルでは、バケットキーはプライマリキーと同じであり、テーブルにパーティションキーを持つことはできません。
-
スキーマ変更を同期する場合、新しい列は既存の列の末尾にのみ追加できます。デフォルトの Lenient スキーマ変更モードでは、他の位置への挿入は自動的に末尾に移動されます。
-
StarRocks バージョン 2.5.7 より前を使用する場合、
table.create.num-bucketsパラメーターでバケット数を明示的に指定する必要があります。StarRocks 2.5.7 以降では、適切なバケット数を自動的に決定できます。 -
StarRocks 3.2 以降を使用する場合、スキーマ変更を高速化するために
table.create.properties.fast_schema_evolutionオプションを有効にすることを推奨します。 -
CDC YAML を使用して EMR Serverless StarRocks にデータをインジェストすると、ストリーミングの問題が発生する場合があります。次のいずれかの回避策を使用できます。
-
Flink SQL StarRocks コネクタを使用し、
sink.version=V1パラメーターを設定します。 -
FE パラメーター
emr_internal_redirectを有効にします。 -
SLB の代わりに StarRocks プライベートゾーンのドメイン名を使用します。
-
構文
source:
...
sink:
type: starrocks
name: StarRocks Sink
jdbc-url: jdbc:mysql://127.0.0.1:9030
load-url: 127.0.0.1:8030
username: root
password: pass
sink.buffer-flush.interval-ms: 5000 # データフラッシュ間隔を設定します。
構成
|
パラメーター |
説明 |
タイプ |
必須 |
デフォルト |
備考 |
|
|
sink コネクタタイプを指定します。 |
String |
はい |
— |
|
|
|
sink の表示名。 |
String |
いいえ |
— |
— |
|
|
データベース接続用の JDBC URL。 |
String |
はい |
— |
カンマ ( |
|
|
Stream Load 用の FE ノードの HTTP URL。 |
String |
はい |
— |
セミコロン ( |
|
|
StarRocks 接続のユーザー名。 |
String |
はい |
— |
このユーザーは、ターゲットテーブルに対して少なくとも SELECT および INSERT 権限を持っている必要があります。StarRocks の GRANT コマンドで必要な権限を付与できます。 |
|
|
StarRocks 接続のパスワード。 |
String |
はい |
— |
— |
|
|
データ書き込みの配信セマンティクス。 |
String |
いいえ |
at-least-once |
|
|
|
Stream Load ジョブのラベルプレフィックス。 |
String |
いいえ |
— |
値には英字、数字、ハイフン ( |
|
|
HTTP 接続を確立するためのタイムアウト。 |
Integer |
いいえ |
30000 |
単位:ミリ秒。値は 100 から 60000 の間でなければなりません。 |
|
|
サーバーからの 100 Continue 応答を待機するためのタイムアウト。 |
Integer |
いいえ |
30000 |
単位:ミリ秒。値は 3000 から 600000 の間でなければなりません。 |
|
|
フラッシュがトリガーされる前のメモリ内キャッシュの最大サイズ (バイト単位)。 |
Long |
いいえ |
94371840 |
単位:バイト。値は 64 MB から 10 GB の間でなければなりません。 説明
|
|
|
フラッシュがトリガーされる前のメモリ内キャッシュの最大行数。 |
Long |
いいえ |
500000 |
値は 1,000 から 5,000,000 の間でなければなりません。 |
|
|
各テーブルのバッファーのフラッシュ間の時間間隔。 |
Long |
いいえ |
300000 |
単位:ミリ秒。 説明
少量のデータを同期するジョブの場合、データが永続化されるまでの長い遅延を避けるために、この値を小さくしてください。 |
|
|
最大再試行回数。 |
Long |
いいえ |
3 |
値は 0 から 1000 の間でなければなりません。 |
|
|
コネクタがバッファーをフラッシュするかどうかをチェックする頻度。 |
Long |
いいえ |
50 |
単位:ミリ秒。 |
|
|
Stream Load に使用されるスレッド数。 |
Integer |
いいえ |
2 |
— |
|
|
データインジェストに Stream Load トランザクションインターフェイス を使用するかどうかを指定します。 |
Boolean |
いいえ |
true |
このオプションは、データベースがサポートしている場合にのみ有効です。 |
|
|
更新操作で update-before レコードを無視するかどうかを指定します。 |
Boolean |
いいえ |
true |
Transform モジュールを介してプライマリキーが変更された場合 (たとえば、 このパラメーターは Ververica Runtime (VVR) 11.8 以降でのみサポートされます。 |
|
|
delete レコードを無視するかどうかを指定します。 |
Boolean |
いいえ |
false |
このパラメーターを このパラメーターは Ververica Runtime (VVR) 11.8 以降でのみサポートされます。 |
|
|
sink の追加プロパティ。 |
String |
いいえ |
— |
サポートされているプロパティについては、「STREAM LOAD」をご参照ください。 |
|
|
自動作成されるテーブルのバケット数。 |
Integer |
いいえ |
— |
|
|
|
自動テーブル作成の追加プロパティ。 |
String |
いいえ |
— |
たとえば、 |
|
|
スキーマ変更操作のタイムアウト。 |
Duration |
いいえ |
30 min |
秒単位の整数でなければなりません。 説明
スキーマ変更操作がこの制限を超えると、ジョブは失敗します。 |
|
|
各 Unicode 文字に割り当てるバイト数。 |
Integer |
いいえ |
3 |
CDC では、VARCHAR 型の長さは文字数で測定されますが、StarRocks ではバイト数で測定されます。 ほとんどの場合、Unicode 文字は UTF-8 エンコーディング後も 3 バイトを超えません。ただし、一部のまれな文字や絵文字は 4 バイト以上を占有する場合があります。 |
|
|
StarRocks にデータをフラッシュする際の HTTP クライアントのタイムアウト。 |
Long |
いいえ |
-1 |
データを StarRocks にフラッシュする際に Stream Load リクエストを送信するための HTTP クライアントのタイムアウト (ミリ秒単位)。値 -1 はシステムのデフォルトを使用し、タイムアウトがないことを意味します。 このパラメーターは Ververica Runtime (VVR) 11.8 以降でのみサポートされます。 |
|
|
sink を閉じるためのタイムアウト。 |
Long |
いいえ |
60000 |
ジョブが閉じるときにフラッシュキューが終了するのを待つためのタイムアウト (ミリ秒単位)。このパラメーターは Ververica Runtime (VVR) 11.8 以降でのみサポートされます。 |
組み込みカタログの再利用
VVR 11.5 以降では、[データ管理] ページで作成された組み込みの StarRocks カタログを Flink CDC データインジェストジョブで直接参照できます。これにより、手動で設定する必要があるプロパティの数が減り、構成が簡素化されます。
sink:
type: starrocks
using.built-in-catalog: starrocks_catalog
データインジェストジョブは、次の StarRocks カタログオプションを自動的に再利用できます。
-
jdbc-url
-
http-url
-
username
-
password
-
table.num-buckets
これらの値をオーバーライドするには、対応する YAML オプションを明示的に設定します。YAML オプションが優先されます。
型マッピング
StarRocks は、すべての CDC YAML 型をサポートしているわけではありません。サポートされていない型を sink に書き込むと、ジョブは失敗します。変換で CAST ビルトイン関数を使用してサポートされていないデータを変換するか、プロジェクション文を使用して結果テーブルから削除することができます。詳細については、「Flink CDC データインジェストジョブを開発する」をご参照ください。
|
CDC 型 |
StarRocks 型 |
備考 |
|
TINYINT |
TINYINT |
— |
|
SMALLINT |
SMALLINT |
|
|
INT |
INT |
|
|
BIGINT |
BIGINT |
|
|
FLOAT |
FLOAT |
|
|
DOUBLE |
DOUBLE |
|
|
BOOLEAN |
BOOLEAN |
|
|
DATE |
DATE |
|
|
TIMESTAMP |
DATETIME |
|
|
TIMESTAMP_LTZ |
DATETIME |
|
|
DECIMAL(p, s) |
DECIMAL(p, s) |
StarRocks はプライマリキーに DECIMAL をサポートしていないため、コネクタはアップストリームの DECIMAL プライマリキー列を同期された StarRocks スキーマで自動的に VARCHAR に変換します。 |
|
CHAR(n) (n <= 85) |
CHAR(n × 3) |
CDC は文字数で長さを測定しますが、StarRocks はバイト数を使用します。コネクタは、マルチバイト UTF-8 文字に対応するために長さを 3 倍にします。 説明
StarRocks の CHAR 型の最大長は 255 です。したがって、長さが 85 までの CDC CHAR 型のみが StarRocks の CHAR 型にマッピングされます。 説明
|
|
CHAR(n) (n > 85) |
VARCHAR(n × 3) |
CDC は文字数で長さを測定しますが、StarRocks はバイト数を使用します。コネクタは、マルチバイト UTF-8 文字に対応するために長さを 3 倍にします。 説明
CDC は文字数で長さを測定しますが、StarRocks はバイト数を使用します。コネクタは長さを 3 倍にします。結果が StarRocks の CHAR 型の 255 バイト制限を超えるため、VARCHAR にマッピングされます。 説明
|
|
VARCHAR(n) |
VARCHAR(n × 3) |
CDC は文字数で長さを測定しますが、StarRocks はバイト数を使用します。コネクタは、マルチバイト UTF-8 文字に対応するために長さを 3 倍にします。 説明
|
|
BINARY(n) |
BINARY(n+2) |
データ整合性を確保するために 2 バイトのパディングが追加されます。 |
|
VARBINARY(n) |
VARBINARY(n+1) |
データ整合性を確保するために 1 バイトのパディングが追加されます。 |
スキーマ変更
データインジェスト sink として、StarRocks は次のスキーマ変更イベントをサポートします。
-
CREATE TABLE イベント
説明ダウンストリームの StarRocks テーブルが既に存在する場合、コネクタは再度作成しようとはしません。ダウンストリームのテーブルスキーマがアップストリームのスキーマと互換性があることを確認してください。
-
ADD COLUMN イベント
説明StarRocks では、プライマリキー列がテーブルの最初に表示される必要があります。新しい列は、それらの後に追加する必要があります。
-
ALTER COLUMN TYPE イベント
説明サポートされているスキーマ変更パスについては、公式 StarRocks ドキュメントをご参照ください。
-
DROP COLUMN イベント
-
TRUNCATE TABLE EVENT
-
DROP TABLE EVENT
コード例
以下の例は、一般的なシナリオの構成を示しています。
単一テーブルの同期
単一の MySQL テーブルを StarRocks に同期します。送信先のデータベースとテーブルが存在しない場合、コネクタは自動的にプライマリキーテーブルを作成します。
pipeline:
name: MySQL to StarRocks Pipeline
source:
type: mysql
name: MySQL Source
hostname: <yourHostname>
port: 3306
username: <yourUsername>
password: ${secret_values.mysql_password}
tables: test_db.test_source_table
server-id: 5401-5499
# (オプション) ジョブを再起動せずに、増分フェーズで新しく追加されたテーブルからデータを同期します。
scan.binlog.newly-added-table.enabled: true
# (オプション) テーブルと列のコメントを送信先に同期します。
include-comments.enabled: true
# (オプション) 読み取りパフォーマンスを向上させるために、キャプチャされたテーブルのバイナリログのみを逆シリアル化します。
scan.only.deserialize.captured.tables.changelog.enabled: true
sink:
type: starrocks
name: StarRocks Sink
jdbc-url: jdbc:mysql://<yourFeHostname>:9030
load-url: <yourFeHostname>:8030
username: <yourUsername>
password: ${secret_values.starrocks_password}
# (オプション) データ量が少ないジョブの場合、永続化の遅延を防ぐためにフラッシュ間隔を短縮します。デフォルト:300000 (5 分)。
sink.buffer-flush.interval-ms: 5000
# (オプション) アップストリームの文字セットが utf8mb4 の場合、テキストの切り捨てを防ぐためにこのパラメーターを 4 に設定します。デフォルト:3。
unicode-char.max-bytes: 4
# (オプション) 自動作成されるテーブルのバケット数。このパラメーターは StarRocks バージョン 2.5.7 より前では必須です。それ以降のバージョンでは自動的に値を推論できます。
table.create.num-buckets: 8
# (オプション) 自動作成されるテーブルのレプリカ数。クラスターに基づいてこの値を構成します。
table.create.properties.replication_num: 3
# (オプション) StarRocks 3.2 以降では、このオプションを有効にしてスキーマ変更を高速化します。
table.create.properties.fast_schema_evolution: true
# 注:変換を使用してプライマリキーを変更する場合は、sink.ignore.update-before: false も設定する必要があります。
# そうしないと、古いプライマリキーに関連付けられた行が送信先に残ります。
pipeline:
name: MySQL to StarRocks Pipeline
データベース全体の同期
MySQL データベース内のすべてのテーブルを StarRocks に同時に同期します。コネクタは送信先のデータベースとプライマリキーテーブルを自動的に作成するため、各テーブルを事前に作成する必要はありません。
source:
type: mysql
name: MySQL Source
hostname: <yourHostname>
port: 3306
username: <yourUsername>
password: ${secret_values.mysql_password}
# 正規表現を使用して、データベース内のすべてのテーブルを照合します。複数のデータベースを照合するには、パターンをカンマで区切ります。
tables: test_db.\.*
server-id: 5401-5499
# (オプション) ジョブを再起動せずに、増分フェーズで新しく追加されたテーブルからデータを同期します。
scan.binlog.newly-added-table.enabled: true
# (オプション) テーブルと列のコメントを送信先に同期します。
include-comments.enabled: true
sink:
type: starrocks
name: StarRocks Sink
jdbc-url: jdbc:mysql://<yourFeHostname>:9030
load-url: <yourFeHostname>:8030
username: <yourUsername>
password: ${secret_values.starrocks_password}
# (オプション) データ量が少ないジョブの場合、永続化の遅延を防ぐためにフラッシュ間隔を短縮します。デフォルト:300000 (5 分)。
sink.buffer-flush.interval-ms: 5000
# (オプション) アップストリームの文字セットが utf8mb4 の場合、テキストの切り捨てを防ぐためにこのパラメーターを 4 に設定します。デフォルト:3。
unicode-char.max-bytes: 4
# (オプション) 自動作成されるテーブルのバケット数。このパラメーターは StarRocks バージョン 2.5.7 より前では必須です。それ以降のバージョンでは自動的に値を推論できます。
table.create.num-buckets: 8
# (オプション) 自動作成されるテーブルのレプリカ数。クラスターに基づいてこの値を構成します。
table.create.properties.replication_num: 3
# (オプション) StarRocks 3.2 以降では、このオプションを有効にしてスキーマ変更を高速化します。
table.create.properties.fast_schema_evolution: true
pipeline:
name: MySQL to StarRocks Pipeline
データベース全体の同期中に特定のテーブルを除外
データベース全体を同期する場合、正規表現を使用して、一時テーブルや機密テーブルなど、送信先に同期したくないテーブルをスキップします。
source:
type: mysql
name: MySQL Source
hostname: <yourHostname>
port: 3306
username: <yourUsername>
password: ${secret_values.mysql_password}
tables: test_db.\.*
# この正規表現に一致するテーブルは同期されません。
tables.exclude: test_db.tmp_.\*
server-id: 5401-5499
sink:
type: starrocks
name: StarRocks Sink
jdbc-url: jdbc:mysql://<yourFeHostname>:9030
load-url: <yourFeHostname>:8030
username: <yourUsername>
password: ${secret_values.starrocks_password}
# (オプション) ロードインターフェイスのバージョン。V2 には StarRocks 2.4 以降が必要です。EMR Serverless StarRocks でストリーミングの問題が発生した場合は、V1 を使用してください。
sink.version: V2
# (オプション) データ量が少ないジョブの場合、永続化の遅延を防ぐためにフラッシュ間隔を短縮します。デフォルト:300000 (5 分)。
sink.buffer-flush.interval-ms: 5000
# (オプション) 自動作成されるテーブルのバケット数。このパラメーターは StarRocks バージョン 2.5.7 より前では必須です。
table.create.num-buckets: 8
# (オプション) StarRocks 3.2 以降では、このオプションを有効にしてスキーマ変更を高速化します。
table.create.properties.fast_schema_evolution: true
pipeline:
name: MySQL to StarRocks Pipeline
指定したデータベースとテーブルへの同期
ODS レイヤーデータベースに書き込む場合など、送信先の StarRocks データベースまたはテーブル名をアップストリーム名と異なるものにする必要がある場合は、ルートを使用して名前を変更します。
source:
type: mysql
name: MySQL Source
hostname: <yourHostname>
port: 3306
username: <yourUsername>
password: ${secret_values.mysql_password}
tables: test_db.\.*
server-id: 5401-5499
sink:
type: starrocks
name: StarRocks Sink
jdbc-url: jdbc:mysql://<yourFeHostname>:9030
load-url: <yourFeHostname>:8030
username: <yourUsername>
password: ${secret_values.starrocks_password}
# (オプション) データ量が少ないジョブの場合、永続化の遅延を防ぐためにフラッシュ間隔を短縮します。デフォルト:300000 (5 分)。
sink.buffer-flush.interval-ms: 5000
# (オプション) 自動作成されるテーブルのバケット数。このパラメーターは StarRocks バージョン 2.5.7 より前では必須です。
table.create.num-buckets: 8
route:
# MySQL の test_db データベース内のすべてのテーブルを、テーブル名を変更せずに StarRocks の test_db2 データベースに同期します。
# <> は、一致したソーステーブル名に置き換えられるプレースホルダーです。
- source-table: test_db.\.*
sink-table: test_db2.<>
replace-symbol: <>
pipeline:
name: MySQL to StarRocks Pipeline
シャーディングされたテーブルのマージ
同一のスキーマを持つ複数のシャーディングされたテーブルを単一の StarRocks テーブルにマージして、クエリと分析を統合します。
source:
type: mysql
name: MySQL Source
hostname: <yourHostname>
port: 3306
username: <yourUsername>
password: ${secret_values.mysql_password}
# user_0 や user_1 など、すべてのシャーディングされたテーブルを照合します。
tables: test_db.user\.*
server-id: 5401-5499
sink:
type: starrocks
name: StarRocks Sink
jdbc-url: jdbc:mysql://<yourFeHostname>:9030
load-url: <yourFeHostname>:8030
username: <yourUsername>
password: ${secret_values.starrocks_password}
# (オプション) データ量が少ないジョブの場合、永続化の遅延を防ぐためにフラッシュ間隔を短縮します。デフォルト:300000 (5 分)。
sink.buffer-flush.interval-ms: 5000
# (オプション) マージされたテーブルの場合、合計データ量に基づいてバケット数を明示的に指定します。
table.create.num-buckets: 8
route:
# すべてのシャーディングされたテーブルを StarRocks の test_db.user テーブルにマージします。
- source-table: test_db.user\.*
sink-table: test_db.user
pipeline:
name: MySQL to StarRocks Pipeline
EVOLVE モードの有効化
デフォルトでは、LENIENT モードは、列の削除、テーブルの削除、テーブルの切り捨てなどのスキーマ変更を送信先に同期しません。厳密なスキーマ同期が必要な場合は、EVOLVE モードを有効にします。このモードには重大な制限があるため、使用する前に以下の注意事項を確認してください。
制限事項と注意事項
-
列名の変更はサポートされていません。アップストリームで列名の変更イベントが発生すると、ジョブは失敗します。
-
列の削除、テーブルの削除、またはテーブルの切り捨ては、送信先に適用されます。アップストリームでの偶発的な操作は、送信先テーブルに直接影響します。デフォルトの LENIENT モードは、テーブルの削除または切り捨てイベントを同期しないため、より安全です。
-
ステートなしでジョブを再起動し、sink テーブルを削除しない場合、アップストリームと sink のスキーマの不一致によりジョブが失敗する可能性があります。ダウンストリームのテーブルスキーマを手動で調整する必要があります。
source:
type: mysql
name: MySQL Source
hostname: <yourHostname>
port: 3306
username: <yourUsername>
password: ${secret_values.mysql_password}
tables: test_db.test_source_table
server-id: 5401-5499
sink:
type: starrocks
name: StarRocks Sink
jdbc-url: jdbc:mysql://<yourFeHostname>:9030
load-url: <yourFeHostname>:8030
username: <yourUsername>
password: ${secret_values.starrocks_password}
pipeline:
name: MySQL to StarRocks Pipeline
# EVOLVE モードを有効にして、スキーマの変更を厳密に同期します。列名の変更など、サポートされていない変更が発生するとジョブは失敗します。
schema.change.behavior: evolve