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

DataWorks:オフラインモードで単一の MaxCompute テーブルから ClickHouse にデータを同期する

最終更新日:Oct 29, 2025

このトピックでは、オフラインモードで単一の MaxCompute テーブルから ApsaraDB for ClickHouse にデータを同期する方法の例を示します。データソースの構成、ネットワーク接続、同期タスクの構成に関するベストプラクティスについて説明します。

背景

ApsaraDB for ClickHouse は、オンライン分析処理 (OLAP) 向けの列指向データベースです。Data Integration を使用すると、ApsaraDB for ClickHouse との間でデータを同期できます。このトピックでは、オフラインモードで単一の MaxCompute テーブルから ApsaraDB for ClickHouse にデータを同期する例を示し、完全なプロセスを説明します。

制限事項

単一テーブルから ClickHouse へのオフライン同期は、ApsaraDB for ClickHouse のみをサポートします。

前提条件

手順

説明

このトピックでは、DataStudio (新バージョン) UI でオフライン同期タスクを構成する例を示します。

1. オフライン同期ノードを作成する

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

  2. 左側のナビゲーションウィンドウで、image アイコンをクリックします。[プロジェクトディレクトリ] の右側にある image アイコンをクリックし、[新しいノード] > [Data Integration] > [オフライン同期] を選択します。オフライン同期ノードのカスタム [名前] を入力し、[確認] をクリックします。

2. ネットワークとリソースを構成する

  1. [ネットワークとリソースの構成] ステップで、同期タスクの [ソース][リソースグループ][宛先] を選択します。[タスクリソース使用量] に特定の数の CU を割り当てることができます。

    • [ソース] には、追加した MaxCompute データソースを選択します。

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

    • [リソースグループ] には、MaxComputeClickHouse の両方のデータソースに接続されているリソースグループを選択します。タスクリソースの [使用量] に特定の数の CU を割り当てることができます。

  2. [ソース][宛先] カードで、[接続をテスト] をクリックします。

    image

  3. ソースと宛先への接続が成功したことを確認したら、[次へ] をクリックします。

3. ソースと宛先を構成する

ソース (MaxCompute) パラメーターを構成する

以下は、ソースの MaxCompute テーブルを構成するための主要なパラメーターです。

image

構成項目

構成の詳細

データソース

前のステップで選択した MaxCompute データソースがデフォルトで表示されます。DataWorks ワークスペースが標準モードの場合、開発プロジェクトと本番プロジェクトの名前は別々に表示されます。

トンネルリソースグループ

このチュートリアルでは、デフォルトで [パブリック伝送リソース] を使用します。専用のトンネルクォータ がある場合は、ドロップダウンリストから選択できます。

テーブル

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

説明

もし:

  • 同期するテーブルが開発環境に存在しない場合、オフライン同期ノードのソーステーブルのドロップダウンリストにテーブルが見つかりません。

  • 同期するテーブルが本番環境に存在しない場合、タスクが実行時にテーブルを見つけられないため、データ同期タスクは送信および公開された後に失敗します。

  • 開発環境と本番環境のテーブルスキーマに一貫性がない場合、実行時の列マッピングがオフライン同期ノードに構成されたマッピングと異なる可能性があります。これにより、誤ったデータ書き込みが発生する可能性があります。

フィルターメソッド

[パーティションフィルター] または [データフィルタリング] を使用してデータをフィルターできます。

  • パーティションフィルター: パーティションフィルター式を使用して、ソースデータの同期範囲をフィルターします。このメソッドを選択した場合は、[パーティション情報][パーティションが存在しない場合] パラメーターも構成する必要があります。

  • データフィルタリング: SQL の WHERE 句を使用して、ソースデータの同期範囲を指定します。WHERE キーワードを入力する必要はありません。

パーティション情報

このパラメーターは、[フィルターメソッド][パーティションフィルター] に設定した場合に必要です。パーティションキー列の値を入力できます。

  • 値は、ds=20220101 などの静的フィールドにすることができます。

  • 値は、ds=${bizdate} などのシステムパラメーターにすることができます。システムパラメーターは、実行時にその値に自動的に置き換えられます。

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

パーティションが存在しない場合に同期タスクを処理するポリシー。次のオプションがサポートされています:

  • エラー

  • 存在しないパーティションを無視してタスクを通常どおり実行

宛先 (ClickHouse) パラメーターを構成する

以下は、宛先の ClickHouse テーブルを構成するための主要なパラメーターです。

image

構成項目

構成の詳細

データソース

前のステップで選択した ClickHouse データソースがデフォルトで表示されます。

テーブル

同期する ClickHouse テーブルを選択します。同期するテーブルが ClickHouse データソースの開発環境と本番環境で同じテーブルスキーマを持つことを確認することをお勧めします。

説明

このセクションには、ClickHouse データソースの開発環境のテーブルのリストが表示されます。ClickHouse データソースの開発環境と本番環境でテーブル定義が異なる場合、開発環境で正しく構成されていても、タスクが本番環境に送信された後にテーブルまたは列が存在しないと報告されることがあります。

プライマリキーまたはユニークキーの競合処理

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

Pre-SQL 文

データ同期タスクの実行前後に、必要に応じて SQL 文を実行できます。たとえば、日単位でデータを同期する前に、対応する日次パーティションのデータをクリアして、データが書き込まれる前にパーティションが空であることを確認できます。

インポート後の文

バッチサイズ (バイト)

データはバッチで ClickHouse に書き込まれます。これらのパラメーターは、バッチサイズのバイト単位の上限とレコード数を指定します。読み取りデータがバイト制限またはレコード数制限のいずれかに達すると、バッチは完了したと見なされます。完了した各バッチは ClickHouse に書き込まれます。

バッチサイズ (バイト) を 16777216 (16 MB) に設定することをお勧めします。バッチサイズ (レコード) は、単一レコードのサイズに基づいて大きな値に設定することをお勧めします。これにより、バッチ書き込みはバイト単位のバッチサイズによってトリガーされます。

たとえば、単一レコードが 1 KB の場合、バッチサイズ (バイト) を 16777216 (16 MB) に、バッチサイズ (レコード) を 20000 (16 MB/1 KB = 16384 より大きい) に設定します。この場合、書き込みはバイト単位のバッチサイズによってトリガーされ、16 MB ごとに書き込みが発生します。

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

ClickHouse へのバッチ書き込みが異常な場合

ClickHouse へのバッチ書き込みが異常な場合、エラー処理ポリシーを選択できます:

  • 単一レコードの書き込みを試行。単一レコードの書き込みがまだ失敗する場合は、ダーティデータとしてカウント: 単一レコードの書き込みは少量のダーティデータを特定できますが、ClickHouse のペイロードに大きな影響を与えます。このオプションは慎重に選択してください。

  • 同期タスクを失敗させて終了: ClickHouse の安定性のために、書き込みエラーが発生したときにタスクを失敗させて終了することを選択できます。アラートを構成して迅速に通知を受け取り、例外を手動で処理します。

  • バッチをダーティデータとしてカウント: タスクの完了を保証し、バッチデータの損失を許容できる場合は、バッチをダーティデータとしてカウントすることを選択できます。許可されるダーティデータレコードの数を使用して、タスクが終了するかどうかを制御します。

4. フィールドマッピングを構成する

ソースと宛先を選択した後、それらの間の列マッピングを指定する必要があります。[名前でマッピング][位置でマッピング][マッピング解除]、または [自動レイアウト] を選択できます。

5. チャネル制御を構成する

オフライン同期タスクは、[タスク並行性][ダーティデータポリシー] などの設定をサポートしています。このチュートリアルでは、[ダーティデータポリシー][ダーティデータを許容しない] に設定され、他の構成ではデフォルト設定が使用されます。詳細については、「コードレス UI でオフライン同期タスクを構成する」をご参照ください。

6. デバッグタスクを構成して実行する

  1. オフライン同期ノード編集ページの右側で、[デバッグ構成] をクリックします。デバッグ実行のために [リソースグループ][スクリプトパラメーター] を設定します。次に、上部のツールバーで [実行] をクリックして、同期リンクが正常に実行されるかどうかをテストします。

  2. 左側のナビゲーションウィンドウで、image アイコンをクリックします。[個人用ディレクトリ] の右側にある image アイコンをクリックし、.sql 拡張子を持つファイルを作成します。次の SQL 文を実行して、宛先テーブルのデータをクエリし、期待どおりかどうかを確認します。

    説明
    SELECT * FROM <clickhouse_target_table_name> LIMIT 20;

7. スケジューリングを構成してノードを公開する

オフライン同期タスクページの右側にある [スケジューリング構成] をクリックします。定期的な実行に必要な スケジューリング構成 パラメーターを構成した後、上部のツールバーで [公開] をクリックし、画面の指示に従って 公開 プロセスを完了します。

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

並行処理を増やしても同期速度が大幅に向上しない場合は、同期タスクのメモリパラメーターを手動で調整できます。次のステップを実行します:

  1. オフライン同期タスクページの上部にあるツールバーで、[コードエディタ] をクリックして、タスクをコードレス UI からコードエディタに切り替えます。

    image

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

    image

コードレス UI では、システムは式 768 MB + (並行性 - 1) × 256 MB を使用して ${heapMem} の値を計算します。コードエディタで ${heapMem} をより大きな値に設定し、${newMem}${heapMem} の値の 3 分の 1 に設定することをお勧めします。たとえば、並行性が 8 の場合、コードレス UI で ${heapMem} に計算されるデフォルト値は 2560 MB です。コードエディタでは、より大きな値を設定できます。たとえば、jvmOption-Xms3072m -Xmx3072m -Xmn1024m に設定します。