StarRocks データソースは、StarRocks との間でデータを読み書きするための双方向チャネルを提供します。このトピックでは、DataWorks が StarRocks のデータ同期でサポートする機能について説明します。
サポートされるバージョン
すべてのバージョンの EMR Serverless StarRocks。
EMR on ECS: StarRocks 2.1。
Community Edition of StarRocks。
説明DataWorks は、内部ネットワーク経由での StarRocks への接続のみをサポートします。したがって、EMR on ECS インスタンスに Community Edition of StarRocks をデプロイする必要があります。
Community Edition of StarRocks はオープンソースプロジェクトです。このデータソースを使用する際に互換性の問題が発生した場合は、チケットを送信してフィードバックを提供できます。
制限事項
MySQL から StarRocks へのデータベース全体のリアルタイム同期では、送信先の StarRocks テーブルはプライマリキーモデルを使用する必要があります。
MySQL から StarRocks へのデータベース全体のリアルタイム同期は、`TRUNCATE` 文を除き、データ定義言語 (DDL) の同期をサポートしていません。他の DDL 文については、無視するか、システムにエラーを報告させるかを選択できます。
サポートされるフィールドタイプ
数値、文字列、日付のフィールドタイプのみがサポートされています。
データ同期の前提条件 (ネットワーク接続)
EMR Serverless StarRocks
リソースグループのネットワーク接続を確保するには、使用する予定の DataWorks リソースグループの IP アドレスを、EMR Serverless StarRocks インスタンスの内部ネットワークホワイトリストに追加する必要があります。
DataWorks リソースグループの IP アドレスホワイトリストについては、「DataWorks の CIDR ブロックをホワイトリストに追加」をご参照ください。
次の図は、EMR Serverless StarRocks インスタンスのホワイトリストに IP アドレスを追加する場所を示しています。

セルフマネージド StarRocks
DataWorks リソースグループが StarRocks のクエリポート、FE ポート、および BE ポートにアクセスできることを確認してください。これらのポートは通常、9030、8030、および 8040 です。
データソースの追加
DataWorks で同期タスクを開発する前に、「データソース管理」の指示に従って、必要なデータソースを DataWorks に追加する必要があります。データソースを追加する際に、DataWorks コンソールでパラメーターの説明を表示して、各パラメーターの意味を理解できます。
ネットワーク環境に基づいて StarRocks の接続モードを選択します:
シナリオ 1:内部ネットワーク接続 (推奨)
内部ネットワーク接続は、低レイテンシーで安全なデータ転送を提供します。追加のパブリックネットワーク権限は必要ありません。
シナリオ:ご利用の StarRocks インスタンスとサーバーレスリソースグループが同じ VPC 内にある場合。
Alibaba Cloud インスタンスモードと接続文字列モードがサポートされています:
ApsaraDB for RDS を選択:同じ VPC 内の StarRocks インスタンスを直接選択できます。システムが接続情報を自動的に取得するため、手動で設定する必要はありません。
User-created Data Store with Public IP Addresses を選択します。このモードでは、インスタンスの内部エンドポイント、ポート、および Load URL を入力できます。
シナリオ 2:パブリックネットワーク接続
パブリックネットワーク接続にはセキュリティリスクがあります。ホワイトリストや IP ベースの認証などのセキュリティポリシーを使用することを推奨します。
シナリオ:クロスリージョンアクセスやオンプレミスアクセスなど、パブリックネットワーク経由で StarRocks インスタンスにアクセスする必要がある場合。
接続文字列モードがサポートされています (StarRocks インスタンスでパブリックネットワークアクセスが有効になっていることを確認してください):
User-created Data Store with Public IP Addresses を選択し、インスタンスのパブリック IP アドレス、ポート、および Load URL を手動で入力します。
デフォルトでは、サーバーレスリソースグループはパブリックネットワークにアクセスできません。パブリックアドレスを使用して StarRocks インスタンスに接続するには、アタッチされた VPC にインターネット NAT ゲートウェイと Elastic IP アドレス (EIP) を設定して、データソースへのパブリックネットワークアクセスを有効にする必要があります。また、サーバーレスリソースグループが StarRocks のクエリポート、FE ポート、および BE ポートにアクセスできることを確認する必要もあります。これらのポートは通常、9030、8030、および 8040 です。
Alibaba Cloud EMR StarRocks Serverless を使用する場合は、ホストアドレス/IP を Internal Endpoint または Public network address に設定し、ポートを [クエリポート] に設定します。
FE:この情報はインスタンスの詳細ページで確認できます。

データベース:EMR StarRocks Manager を使用してインスタンスに接続した後、SQL Editor または メタデータ管理 でデータベースを表示できます。
説明データベースを作成するには、SQL エディタで SQL コマンドを実行します。
データ同期タスクの開発
同期タスクの設定のエントリポイントと手順については、以下の設定ガイドをご参照ください。
単一テーブルのオフライン同期の設定ガイド
サポートされるデータソース:Data Integration モジュールでサポートされるすべてのデータソースタイプ。
手順の詳細については、「コードレス UI での同期タスクの設定」および「コードエディタでの同期タスクの設定」をご参照ください。
コードエディタのすべてのパラメーターとスクリプトの例については、以下の「付録:スクリプトデモとパラメーターの説明」をご参照ください。
単一テーブルのリアルタイム同期
サポートされるデータソース:Kafka
設定ガイド:「データベース全体のリアルタイム同期タスクの設定」
データベース全体のオフライン同期
サポートされるデータソース:MySQL
設定ガイド:「データベース全体のリアルタイム同期タスクの設定」
データベース全体のリアルタイム同期
サポートされるデータソース:MySQL、Oracle、および PolarDB
設定ガイド:「データベース全体のリアルタイム同期タスクの設定」
付録:スクリプトデモとパラメーターの説明
コードエディタを使用したバッチ同期タスクの設定
コードエディタを使用してバッチ同期タスクを設定する場合、統一されたスクリプト形式の要件に基づいて、スクリプト内で関連パラメーターを設定する必要があります。詳細については、「コードエディタの使用」をご参照ください。以下では、コードエディタを使用してバッチ同期タスクを設定する際に、データソースに対して設定する必要があるパラメーターについて説明します。
Reader スクリプトデモ
{
"stepType": "starrocks",
"parameter": {
"selectedDatabase": "didb1",
"datasource": "starrocks_datasource",
"column": [
"id",
"name"
],
"where": "id>100",
"table": "table1",
"splitPk": "id"
},
"name": "Reader",
"category": "reader"
}Reader スクリプトのパラメーター
パラメーター | 説明 | 必須 | デフォルト値 |
datasource | StarRocks データソースの名前。 | はい | なし |
selectedDatabase | StarRocks データベースの名前。 | いいえ | StarRocks データソースで設定されたデータベース名。 |
column | データを読み取る列の名前。StarRocks からデータを読み取る際に `SET_VAR` ヒントを追加したい場合は、最初の列名の前にヒントを追加できます。たとえば、`id` 列からデータを読み取り、 | はい | なし |
where | フィルター条件。実際のビジネスシナリオでは、多くの場合、当日のデータを同期します。where 条件を
| いいえ | なし |
table | 同期するテーブルの名前。 | はい | なし |
splitPk | StarRocks Reader がデータを抽出する際に splitPk を指定すると、システムは splitPk で表されるフィールドを使用してデータシャーディングを行います。これにより、データ同期のタスクを並行して実行でき、効率が向上します。プライマリキーは通常、均等に分散されているため、splitPk にはテーブルのプライマリキーを使用することを推奨します。これにより、シャードでのデータホットスポットを防ぐことができます。 | いいえ | なし |
Writer スクリプトデモ
{
"stepType": "starrocks",
"parameter": {
"selectedDatabase": "didb1",
"loadProps": {
"row_delimiter": "\\x02",
"column_separator": "\\x01"
},
"datasource": "starrocks_public",
"column": [
"id",
"name"
],
"loadUrl": [
"1.1.X.X:8030"
],
"table": "table1",
"preSql": [
"truncate table table1"
],
"postSql": [
],
"maxBatchRows": 500000,
"maxBatchSize": 5242880,
"strategyOnError": "exit"
},
"name": "Writer",
"category": "writer"
}Writer スクリプトのパラメーター
パラメーター | 説明 | 必須 | デフォルト値 |
datasource | StarRocks データソースの名前。 | はい | なし |
selectedDatabase | StarRocks データベースの名前。 | いいえ | StarRocks データソースで設定されたデータベース名。 |
loadProps | 説明 Stream Load を使用して StarRocks にデータを書き込む際、書き込みポリシー (Upsert または Append) は送信先テーブルのモデル定義によって自動的に決定され、書き込み段階で指定する必要はありません。具体的には、プライマリキーモデルは自動的に Upsert 操作を実行し、他のモデルはデフォルトで Append 操作を実行します。 StarRocks Stream Load のリクエストパラメーター。Stream Load を使用して CSV 形式でデータをインポートする場合、ここでインポートパラメーターを設定できます。特別な設定が不要な場合は、{} を使用します。設定可能なパラメーターは次のとおりです:
データに \t または \n が含まれている場合は、他の文字を区切り文字として使用する必要があります。次の例は、特殊文字の使用方法を示しています: Stream Load は JSON 形式でのデータインポートもサポートしています。次のパラメーターを設定できます: JSON 形式で設定できるパラメーターは次のとおりです:
| はい | なし |
column | 設定されたテーブルで同期する列のセット。 | はい | なし |
loadUrl | StarRocks フロントエンドの IP アドレスと HTTP ポートを入力します。デフォルトは通常 | はい | なし |
table | 同期するテーブルの名前。 | はい | なし |
preSql | データ同期タスクが実行される前に実行される SQL 文。たとえば、`TRUNCATE TABLE tablename` は実行前にテーブルから古いデータをクリアします。 | いいえ | なし |
postSql | データ同期タスクが実行された後に実行される SQL 文。 | いいえ | なし |
maxBatchRows | 各バッチで書き込む最大行数。 | いいえ | 500000 |
maxBatchSize | 各バッチで書き込む最大バイト数。 | いいえ | 5242880 |
strategyOnError | StarRocks にデータをバッチで書き込む際の例外処理ポリシー。 有効な値:
デフォルト値: | いいえ | exit |