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

DataWorks:ApsaraDB for ClickHouse への単一 MaxCompute テーブルの同期

最終更新日:Feb 05, 2026

本トピックでは、DataWorks のオフライン同期タスクを構成して、単一の MaxCompute テーブルから ApsaraDB for ClickHouse テーブルへデータを書き込む方法について説明します。データソースの構成、ネットワーク接続、およびタスク設定についても解説します。

背景情報

ApsaraDB for ClickHouse は、オンライン分析処理 (OLAP) を目的としたカラムナデータベースサービスです。Data Integration を使用すると、ApsaraDB for ClickHouse から他の宛先へのデータ同期、および他のデータソースからの ApsaraDB for ClickHouse へのデータ同期が可能です。本トピックでは、単一の MaxCompute テーブルから ApsaraDB for ClickHouse へのデータ同期を行うオフライン同期タスクの構成方法を紹介します。

制限事項

単一テーブルのオフライン同期は、Alibaba Cloud 上の ApsaraDB for ClickHouse インスタンスでのみ利用できます。

前提条件

操作手順

説明

本トピックでは、Data Studio (新) を使用したオフライン同期タスクの構成方法を紹介します。

ステップ 1:バッチ同期ノードの作成

  1. DataWorks コンソールの[ワークスペース]ページに移動します。トップナビゲーションバーで、目的のリージョンを選択します。目的のワークスペースを見つけ、[操作]列で[ショートカット] > [DataStudio]を選択します。

  2. 左側のナビゲーションウィンドウで image をクリックし、image Project Directory の横にある [アイコン] をクリックし、[新規ノード] > [データ統合] > [バッチ同期] を選択し、ノードの [名前] を入力して [確認] をクリックします。

ステップ 2:ネットワークおよびリソース設定の構成

  1. ネットワークおよびリソース設定 ステップで、同期タスクの データソースリソースグループデータ送信先 をそれぞれ選択します。また、このタスクの計算ユニット (CU) 単位での タスクリソース使用量 を指定することもできます。

    • データソース には、追加済みの MaxCompute データソースを選択します。

    • [データ宛先] には、追加した ApsaraDB for ClickHouse データソースを選択します。

    • リソースグループ には、MaxCompute および ApsaraDB for ClickHouse の両方のデータソースに接続可能なリソースグループを選択します。また、タスクリソースの CU 使用量 を指定することもできます。

  2. データソース および データ送信先 の各セクションで、接続性のテスト をクリックします。

    image

  3. 両方の接続性テストが成功した後、次へ をクリックします。

ステップ 3:ソースおよび送信先の構成

ソースパラメーター (MaxCompute)

以下の表は、MaxCompute データソースの構成に必要な主なパラメーターを示しています。

image

パラメーター

説明

データソース

前ステップで選択した MaxCompute データソースです。Standard モードの DataWorks ワークスペースを使用している場合、開発環境および本番環境のプロジェクト名が表示されます。

Tunnel リソースグループ

本チュートリアルでは、デフォルトで パブリック転送リソース を使用します。また、専用 Tunnel クォータ を保有している場合は、ドロップダウンリストから選択できます。

テーブル

ソースとなる MaxCompute テーブルを選択します。Standard モードの DataWorks ワークスペースを使用している場合、開発環境および本番環境の両方の MaxCompute 環境に、同一の名前およびテーブルスキーマを持つテーブルが存在することを確認してください。

説明

注:

  • ソーステーブルが開発環境に存在しない場合、ドロップダウンリストにそのテーブルが表示されません。

  • ソーステーブルが本番環境に存在しない場合、タスクの公開およびスケジュール実行後に、テーブルが見つからないため同期タスクが失敗します。

  • 開発環境と本番環境のテーブルスキーマが不一致の場合、スケジュール実行時の列マッピングがここで構成した内容と異なる可能性があり、誤ったデータ書き込みにつながります。

フィルター方法

パーティションフィルター または データフィルター を使用してソースデータをフィルターできます。

  • パーティションフィルター:パーティション式を用いて同期範囲を指定します。この方法を選択した場合、パーティション および パーティションが存在しない場合の動作 のパラメーターも構成する必要があります。

  • データフィルター:SQL WHERE 句を用いて同期範囲を指定します。WHERE キーワードは含めないでください。

パーティション

フィルター方法パーティションフィルター に設定した場合、このパラメーターは必須です。パーティション列の値を指定できます。

  • 固定値 を使用できます(例:ds=20220101)。

  • スケジューリングパラメーターを使用できます(例:ds=${bizdate})。システムは実行時にこれらのパラメーターを実際の値に自動的に置き換えます。

パーティションが存在しない場合の動作

パーティションが存在しない場合の処理方法を指定します。有効な値は以下のとおりです。

  • エラーが報告されます

  • 無視して続行

送信先パラメーター (ApsaraDB for ClickHouse)

以下の表は、ApsaraDB for ClickHouse データ送信先の構成に必要な主なパラメーターを示しています。

image

パラメーター

説明

データソース

前ステップで選択した ApsaraDB for ClickHouse データソースです。

テーブル

送信先となる ApsaraDB for ClickHouse テーブルを選択します。データ同期に使用するテーブルは、開発環境および本番環境の両方で同一のテーブルスキーマを持つことを推奨します。

説明

テーブル一覧には、ApsaraDB for ClickHouse データソースの開発環境のテーブルが表示されます。開発環境と本番環境のテーブル定義が異なる場合、開発環境ではタスクの構成が正しく行われても、本番環境ではテーブルまたは列が不足しているためにタスクが失敗する可能性があります。

プライマリキー/ユニークキーの競合処理

insert into を使用する場合、統合タスクは実行時にプライマリキーの一意性および制約違反をチェックします。

インポート前ステートメント

データ同期タスクの実行前および実行後に SQL ステートメントを実行できます。たとえば、タスク実行前に日次パーティションのデータをクリアして、空であることを保証できます。

インポート後ステートメント

バッチ挿入サイズ(バイト)

Data Integration は、ApsaraDB for ClickHouse へデータをバッチ単位で書き込みます。これらのパラメーターは、各バッチの最大バイト数および最大レコード数を定義します。いずれかの制限に達した時点で書き込みがトリガーされます。

バッチ挿入サイズ(バイト) の推奨値は 16777216(16 MB)です。バッチ挿入サイズ(レコード数) は、単一レコードのサイズに基づいて大きな値を設定することを推奨します。これにより、バッチ書き込みは主にバイト数制限によってトリガーされるようになります。

たとえば、単一レコードが 1 KB の場合、バッチ挿入サイズ(バイト) を 16777216(16 MB)に、バッチ挿入サイズ(レコード数) を 20000(16 MB ÷ 1 KB = 16384 より大きい値)に設定します。この場合、バッチサイズが 16 MB に達した時点で書き込みがトリガーされます。

バッチ挿入サイズ(レコード数)

ClickHouse でのバッチ書き込み例外発生時

ApsaraDB for ClickHouse へのバッチ書き込みが失敗した場合のエラー処理戦略を指定します。有効な値は以下のとおりです。

  • 単一レコードの書き込みを試行し、それでも失敗した場合はダーティデータとして記録:個別レコードの書き込みにより、特定のダーティデータを特定できますが、ApsaraDB for ClickHouse への負荷が大幅に増加する可能性があります。このオプションは注意して使用してください。

  • 失敗して同期タスクを終了:ApsaraDB for ClickHouse の安定性を維持するために、書き込み例外発生時にタスクを失敗させます。その後、アラートを設定して手動介入を行えるようにできます。

  • バッチ全体をダーティデータとして記録:タスクの完了を優先し、データ損失を許容できる場合、このオプションを選択してバッチ全体をダーティデータとして記録できます。許容されるダーティデータのレコード数の上限を設定することで、タスクの終了可否を制御できます。

ステップ 4:フィールドマッピングの構成

データソースおよび送信先を選択した後、ソース列と送信先列をマッピングします。名前によるマッピング行によるマッピングマッピング解除、または 自動レイアウト を選択できます。

ステップ 5:チャネル制御の構成

オフライン同期タスクに対して、ジョブ同時実行数 および ダーティデータポリシー を構成できます。本チュートリアルでは、ダーティデータポリシーダーティデータを許容しない に設定し、その他のパラメーターはデフォルト値のままとします。詳細については、「コードレス UI によるタスクの構成」をご参照ください。

ステップ 6:タスクのデバッグおよび実行

  1. バッチ同期ノードの構成ページ右側で、Run Configuration をクリックし、デバッグ用の リソースグループ および スクリプトパラメーター を設定した後、上部ツールバーの 実行 をクリックしてタスクをテストします。

  2. 左側のナビゲーションウィンドウで、image をクリックします。imageMy Directory の横にある[アイコン] をクリックし、.sql 拡張子のファイルを作成し、次の SQL 文を実行して宛先テーブルのデータを検証します。

    説明
    SELECT * FROM <your_clickhouse_destination_table_name> LIMIT 20;

ステップ 7:スケジュール設定および公開

バッチ同期タスクの構成ページ右側で、スケジュール設定 をクリックし、必要な スケジュールパラメーター を構成した後、上部ツールバーの 公開 をクリックします。画面の指示に従ってタスクを公開します。

付録:メモリパラメーターの調整

同時実行数を増加させても同期スループットが大幅に向上しない場合、タスクのメモリパラメーターを手動で調整します。

  1. バッチ同期タスクページの上部ツールバーで、スクリプトモード をクリックして、ウィザードモードから切り替えます。

    image

  2. JSON スクリプトの setting セクションに、jvmOption パラメーターを追加します。パラメーターの形式は -Xms${heapMem} -Xmx${heapMem} -Xmn${newMem} です。

    image

ウィザードモードでは、${heapMem} の値は、次の数式でシステムが算出します:768 MB + (ジョブ同時実行数 - 1) × 256 MB。スクリプトモードでは、${heapMem} の値をより大きく設定することを推奨し、${newMem}${heapMem} の値の約 1/3 に設定することを推奨します。たとえば、ジョブ同時実行数が 8 の場合、ウィザードモードで算出されるデフォルトの ${heapMem} 値は 2560 MB です。スクリプトモードでは、より大きな値(例: jvmOption-Xms3072m -Xmx3072m -Xmn1024m に設定)を指定できます。