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

DataWorks:MaxCompute の単一テーブルを ClickHouse へ一括同期する

最終更新日:Mar 07, 2026

本トピックでは、MaxCompute の単一テーブルから ApsaraDB for ClickHouse へデータを一括同期する手順を例を用いて説明し、データソースの構成、ネットワーク接続、および一括同期タスクの構成に関するベストプラクティスを紹介します。

ApsaraDB for ClickHouse の概要

ApsaraDB for ClickHouse は、オンライン分析処理(OLAP)向けに設計された列指向データベースです。Data Integration では、ApsaraDB for ClickHouse から他の宛先へのデータ同期および他のソースから ApsaraDB for ClickHouse へのデータ同期がサポートされています。本トピックでは、MaxCompute の単一テーブルから ApsaraDB for ClickHouse へデータを一括同期するエンドツーエンドの例を示します。

制限事項

単一テーブルの一括同期は、ApsaraDB for ClickHouse のみでサポートされています。

前提条件

操作手順

説明

本トピックでは、DataStudio(新バージョン) の UI を使用した一括同期タスクの構成方法を説明します。

ノードの作成とタスクの構成

本トピックでは、コードレス UI を使用したノードの作成および構成に関する一般的な手順の詳細は説明しません。該当情報については、「コードレス UI でのノードの構成」をご参照ください。

ソースおよび宛先の構成

データソースおよびリソースセクションで、ソースをご利用の MaxCompute データソースに、宛先をご利用の ApsaraDB for ClickHouse データソースに設定します。その後、リソースグループを選択して接続性をテストします。

ソース(MaxCompute)パラメーターの構成

ソース MaxCompute テーブルの主なパラメーターについて以下に説明します。

パラメーター

説明

Tunnel Resource Group

デフォルトでは、パブリック伝送リソースが使用されます。ご契約済みの専用トンネルクォータをお持ちの場合は、ドロップダウンリストから選択できます。

Table

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

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

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

  • 開発環境および本番環境のテーブルスキーマが不一致の場合、タスク実行時のフィールドマッピングが構成時と異なる可能性があります。これにより、誤ったデータが書き込まれるおそれがあります。

Filtering Method

Partition FilteringおよびData Filterをサポートしています。

  • Partition Filtering:パーティション式を用いて、指定されたソースデータの同期範囲をフィルタリングします。この方法を選択した場合、Partition InformationおよびIf partitions do not exist, パラメーターを構成する必要があります。

  • Data Filter:SQL の WHERE 句を用いて同期対象のソースデータを指定します(WHERE キーワードは含めないでください)。

Partition

Filtering MethodPartitionに設定した場合、このパラメーターは必須です。パーティション列の値を入力します。

  • 値には固定値を指定できます(例:ds=20220101)。

  • 値にはスケジューリングシステムパラメーターを指定できます(例:ds=${bizdate})。タスク実行時に、システムがこのパラメーターを対応する値に自動的に置き換えます。

  • 複数のパーティションを指定できます。

If partitions do not exist,

指定されたパーティションが存在しない場合に適用するポリシーを指定します。有効な値は以下のとおりです。

  • Error

  • the partitions are ignored and tasks are normally run.

宛先(ApsaraDB for ClickHouse)パラメーターの構成

宛先 ApsaraDB for ClickHouse テーブルの主なパラメーターについて以下に説明します。

パラメーター

説明

Table

データを同期する ApsaraDB for ClickHouse テーブルを選択します。ApsaraDB for ClickHouse データソースのテーブルスキーマは、開発環境および本番環境で同一であることを推奨します。

説明

ここに表示されるのは、開発環境の ApsaraDB for ClickHouse データソースからのテーブル一覧です。開発環境および本番環境のテーブル定義が異なる場合、タスクの構成は正常に完了したように見えても、本番環境への公開後に「テーブルまたはカラムが存在しない」というエラーによりタスクが失敗する可能性があります。

Primary or Unique Key Conflict Handling

insert into を選択した場合、統合タスクは実行時にプライマリキーの重複および制約違反を検証します。

Statement Run Before Writing

必要に応じて、データ同期タスクの前後で SQL 文を実行できます。たとえば、日次同期の前に、対応する日次パーティションをクリアする文を実行することで、新規データの書き込み前に空の状態を保証できます。

Statement Run After Writing

Batch Insert Size (Bytes)

データは ApsaraDB for ClickHouse へバッチ単位で書き込まれます。これらのパラメーターは、1 回のバッチ書き込みにおける最大バイト数およびレコード数を定義します。キャッシュされたデータ量が指定されたバイト数またはレコード数のいずれかに達すると、バッチ書き込みがトリガーされます。

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

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

Data Records Per Write

If a batch write fails

ApsaraDB for ClickHouse へのバッチ書き込み中に発生する例外の処理ポリシーを指定します。

  • Try single-row write. If it still fails, record it as dirty data.:単一行書き込みにより少量のダーティデータを特定できますが、ClickHouse の負荷に大きな影響を与えます。このオプションは慎重に選択してください。

  • Exit on Sync Task Failure:ClickHouse の安定性を確保するために、書き込みエラー発生時にタスクを終了させることができます。アラートを構成することで、迅速に通知を受け、手動でエラーに対応できます。

  • Count batch write failures as dirty data.:タスクが完了することを保証したい場合や、破棄されたバッチデータを許容できる場合、バッチデータをダーティデータとしてカウントするよう選択できます。これにより、ダーティデータの上限値を用いてタスクの終了可否を制御できます。

フィールドマッピングの構成

ソースおよび宛先を選択した後、ソースカラムと宛先カラムのマッピングを指定する必要があります。Map Fields with the Same NameMap Fields in the Same LineDelete All Mappings、またはAuto Layoutを選択できます。

高度な設定

オフライン同期タスク向けの設定(例:Expected Maximum ConcurrencyおよびPolicy for Dirty Data Records)を構成できます。本チュートリアルでは、Policy for Dirty Data RecordsDisallow Dirty Data Recordsに設定し、その他の設定はデフォルト値を使用します。詳細については、「コードレス UI の構成」をご参照ください。

タスクの構成および実行

  1. 一括同期ノードの編集ページ右側にあるRun Configurationをクリックし、デバッグ実行用のResource GroupおよびScript Parametersを構成した後、上部ツールバーのRunをクリックして、同期リンクが正常に動作するかどうかをテストします。

  2. 左側ナビゲーションバーの image をクリックし、Personal Directory の右側にある新規アイコンをクリックして、新しい SQL ファイルを作成します。次の SQL 文を実行して、宛先テーブル内のデータを照会し、データが期待通りであることを確認します。

    説明
    SELECT * FROM <your_clickhouse_destination_table_name> LIMIT 20;

スケジュールの構成およびタスクの公開

オフライン同期タスクの右側にあるScheduling Settingsをクリックします。スケジュール実行用のスケジュール構成パラメーターを構成した後、上部ツールバーのPublishをクリックします。公開パネルで、画面上の指示に従って公開を完了します。

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

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

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

    image

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

    image

コードレス UI では、${heapMem} の値は、数式 768 MB + (同時実行レベル - 1) × 256 MB を用いて計算されます。コードエディタでは、${heapMem} をより大きな値に設定し、${newMem}${heapMem} の 3 分の 1 に設定することを推奨します。たとえば、同時実行レベルが 8 の場合、コードレス UI における ${heapMem} のデフォルト値は 2560 MB ですが、コードエディタではより大きな値(例:3072 MB)に設定できます。この場合、jvmOption パラメーターを -Xms3072m -Xmx3072m -Xmn1024m に設定できます。