StarRocks カタログを使用すると、テーブルごとに DDL 文を手動で記述することなく、Realtime Compute for Apache Flink 開発コンソールで StarRocks のメタデータ (データベース、テーブル、パーティション) に直接アクセスできます。Flink は StarRocks テーブルを自動的にマッピングするため、すぐにデータのクエリや書き込みが可能です。
このトピックでは、StarRocks カタログの作成、表示、使用、削除方法について説明します。
制限事項
-
StarRocks カタログには、エンジンバージョン vvr-6.0.6-flink-1.15 以降が必要です。
-
StarRocks カタログはスキーマについては読み取り専用です。カタログを介して StarRocks テーブルを作成または変更することはできません。
StarRocks カタログの作成
コンソール UI と Flink SQL の 2 つの方法が利用可能です。UI を使用する方法を推奨します。
コンソールでの StarRocks カタログの作成
-
Realtime Compute for Apache Flink コンソールにログインします。管理するワークスペースを探し、[アクション] 列の [コンソール] をクリックします。
-
左側のナビゲーションペインで、[カタログ] をクリックします。
-
[カタログリスト] ページで、[カタログの作成] をクリックします。[カタログの作成] ウィザードの [組み込みカタログ] タブで [StarRocks] を選択し、[次へ] をクリックします。
-
カタログ パラメーターを設定します。
重要StarRocks カタログの設定は、作成後に変更することはできません。設定を変更するには、既存のカタログを削除して新しいカタログを作成する必要があります。
パラメーター 説明 必須 注意 catalog nameStarRocks カタログの名前。 はい 小文字と数字のみ使用できます。ハイフン (-)、アンダースコア (_)、大文字は使用できません。 endpointフロントエンド (FE) ノードのエンドポイント。 はい フォーマット: jdbc:mysql://IP:port。デフォルトの JDBC ポートは 9030 です。dbname接続先のデフォルトの StarRocks データベース。 はい — usernameStarRocks へのアクセスに使用するユーザー名。 はい — passwordStarRocks へのアクセスに使用するパスワード。 はい 認証情報の漏洩を避けるため、プレーンテキストパスワードの代わりに変数を使用してください。詳細については、「変数の管理」をご参照ください。 
-
[確認] をクリックします。
カタログは、[カタログリスト] ページに表示されます。
Flink SQL を使用した StarRocks カタログの作成
スクリプトページの SQL エディタで、CREATE CATALOG 文を入力し、その文を選択して、左側の[実行] をクリックします。
CREATE CATALOG <catalogname> WITH (
'type' = 'starrocks',
'endpoint' = 'jdbc:mysql://<IP>:<port>',
'username' = '<username>',
'password' = '<password>',
'dbname' = '<dbname>'
);
設定オプションは VVR のバージョンによって異なります。
VVR 11 以降
| オプション | 説明 | 必須 | 注意 |
|---|---|---|---|
catalogname |
StarRocks カタログの名前。 | はい | 小文字 (a-z) と数字 (0-9) のみ使用できます。 |
type |
コネクタタイプ。 | はい | starrocks に設定します。 |
endpoint |
フロントエンド (FE) エンドポイント。 | いいえ | フォーマット: jdbc:mysql://IP:port。デフォルトポート: 9030。このオプションを使用すると、jdbc-url と http-url を個別に設定する必要がなくなります。 |
jdbc-url |
FE MySQL サーバーの JDBC URL。 | いいえ | 複数のアドレスはカンマで区切ります。フォーマット: jdbc:mysql://<fe_host1>:<fe_query_port1>,<fe_host2>:<fe_query_port2>。http-url と一緒に使用する必要があります。 |
http-url |
FE HTTP サーバーの HTTP URL。 | いいえ | 複数のアドレスはセミコロンで区切ります。フォーマット: <fe_host1>:<fe_http_port1>;<fe_host2>:<fe_http_port2>。jdbc-url と一緒に使用する必要があります。 |
username |
StarRocks へのアクセスに使用するユーザー名。 | はい | — |
password |
StarRocks へのアクセスに使用するパスワード。 | はい | プレーンテキストの値の代わりに変数を使用してください。詳細については、「ネームスペース変数」をご参照ください。 |
dbname |
接続先のデフォルトのデータベース。 | いいえ | default-database と同等です。どちらか一方を使用してください。 |
default-database |
接続先のデフォルトのデータベース。 | いいえ | dbname との互換性のためのエイリアスです。どちらか一方を使用してください。 |
table.num-buckets |
カタログを通じて作成されるテーブルのパーティションごとのデフォルトのバケット数。 | いいえ | — |
table.char-expand-multiple |
カタログを通じてテーブルを作成する際に、VARCHAR および CHAR 列の長さに適用される乗数。 |
いいえ | デフォルト: 4。 |
table.binary-padding |
カタログを通じてテーブルを作成する際に、VARBINARY および BINARY 列の長さに追加される文字数。 |
いいえ | デフォルト: 2。 |
table.key-type |
カタログを通じて作成されるテーブルのテーブルタイプ。 | いいえ | 有効な値: PRI (デフォルト、プライマリキーテーブル)、UNI (一意キーテーブル)、AGG (集計テーブル)、DUP (重複キーテーブル)。 |
table.keys |
カタログを通じて作成されるテーブルのキーフィールド。 | いいえ | — |
table.distribution-keys |
カタログを通じて作成されるテーブルの分散列 (バケットキー)。 | いいえ | 指定しない場合、プライマリキーテーブルはデフォルトでプライマリキーをバケットキーとして使用します。 重要 このパラメーターを空の文字列 ( |
table.enable-null-primary-key |
Flink が StarRocks の NULL 許容のプライマリキー列を NULL 非許容として扱うかどうか。 | いいえ | 有効な値: false (デフォルト)、true。true に設定した場合、予期しない動作を避けるために、アップストリームデータのプライマリキー列に NULL 値がないことを確認してください。 |
VVR 8 以前
| オプション | 説明 | 必須 | 注意 |
|---|---|---|---|
catalogname |
StarRocks カタログの名前。 | はい | 小文字 (a-z) と数字 (0-9) のみ使用できます。 |
type |
コネクタタイプ。 | はい | starrocks に設定します。 |
endpoint |
フロントエンド (FE) エンドポイント。 | はい | フォーマット: jdbc:mysql://IP:port。デフォルトポート: 9030。 |
username |
StarRocks へのアクセスに使用するユーザー名。 | はい | — |
password |
StarRocks へのアクセスに使用するパスワード。 | はい | プレーンテキストの値の代わりに変数を使用してください。詳細については、「ネームスペース変数」をご参照ください。 |
dbname |
接続先のデフォルトのデータベース。 | はい | — |
StarRocks カタログの表示
-
Realtime Compute for Apache Flink コンソールにログインします。目的のワークスペースを探し、[アクション] 列の [コンソール] をクリックします。
-
左側のナビゲーションペインで、[カタログ] をクリックします。
-
[カタログリスト] ページで、カタログを探します。[名前] と [タイプ] の列に、基本情報が表示されます。
説明カタログ内のデータベースとテーブルを閲覧するには、[操作] 列の [表示] をクリックします。
StarRocks カタログの使用
カタログは StarRocks のデータを 3 レベルの名前空間として公開します: catalog_name.db_name.table_name。 Flink SQL では、各レベルでバッククォートで囲まれた識別子を使用してテーブルを参照します。
| Flink 名前空間の階層 | 対応する StarRocks の要素 |
|---|---|
| カタログ名 | Flink でのみ定義 |
| データベース名 | StarRocks データベース名 |
| テーブル名 | StarRocks テーブル名 |
StarRocks テーブルからのデータ読み取り
VVR 11 以降
INSERT INTO ${other_sink_table}
SELECT ...
FROM `${catalog_name}`.`${db_name}`.`${table_name}`
VVR 8 以前
OPTIONS ヒントは、ソーステーブルのコネクタパラメーターを指定するために必要です。
INSERT INTO ${other_sink_table}
SELECT ...
FROM `${catalog_name}`.`${db_name}`.`${table_name}`
/*+
OPTIONS('connector' = 'starrocks', 'jdbc-url' = 'jdbc:mysql://IP:port', 'scan-url' = 'IP:port')
*/
StarRocks テーブルへのデータ書き込み
VVR 11 以降
INSERT INTO `${catalog_name}`.`${db_name}`.`${table_name}`
SELECT ...
FROM ${other_source_table}
VVR 8 以前
OPTIONS ヒントは、結果テーブルのコネクタパラメーターを指定するために必要です。
INSERT INTO `${catalog_name}`.`${db_name}`.`${table_name}`
/*+
OPTIONS('connector' = 'starrocks', 'jdbc-url' = 'jdbc:mysql://IP:port', 'load-url' = 'IP:port', 'sink.buffer-flush.interval-ms' = '5000', 'sink.properties.row_delimiter' = '\x02', 'sink.properties.column_separator' = '\x01')
*/
SELECT ...
FROM ${other_source_table}
CTAS または CDAS を使用した StarRocks への書き込み
CTAS (CREATE TABLE AS SELECT) と CDAS (CREATE DATABASE AS DATABASE) を使用すると、単一のステートメントで既存のソースから StarRocks のテーブルやデータベースを作成できます。
USE CATALOG sr_catalog;
CREATE TABLE IF NOT EXISTS `${table_name}`
WITH (
...
) AS TABLE ${other_source_table};
CREATE DATABASE IF NOT EXISTS `${db_name}`
WITH (
...
) AS DATABASE ${other_source_database};
完全なウォークスルーについては、「Flink を使用した MySQL から StarRocks へのデータ取り込み」をご参照ください。
StarRocks カタログの削除
カタログを削除しても、実行中のデプロイメントには影響しません。ただし、未公開のデプロイメントや、一時停止が必要なデプロイメントには影響します。注意して進めてください。
コンソール UI と Flink SQL の 2 つの方法が利用可能です。UI を使用する方法を推奨します。
コンソールでの StarRocks カタログの削除
-
Realtime Compute for Apache Flink コンソールにログインします。目的のワークスペースを見つけ、[アクション] 列の [コンソール] をクリックします。
-
左側のナビゲーションペインで、[カタログ] をクリックします。
-
[カタログリスト] ページで、カタログを見つけ、[アクション] 列の [削除] をクリックします。
-
確認ダイアログで、[削除] をクリックします。
カタログは、左側のナビゲーションの[カタログ] ペインから削除されます。
Flink SQL を使用した StarRocks カタログの削除
スクリプトページの SQL エディタに次のステートメントを入力し、そのステートメントを右クリックして[実行]を選択します。
DROP CATALOG `<catalog name>`;
<catalog name> を、削除するカタログの名前に置き換えます。
ステートメントの実行後、左側のナビゲーションの [カタログ] ペインで、カタログが削除されていることを確認します。