このトピックでは、オフラインモードで単一の MaxCompute テーブルから ApsaraDB for ClickHouse にデータを同期する方法の例を示します。データソースの構成、ネットワーク接続、同期タスクの構成に関するベストプラクティスについて説明します。
背景
ApsaraDB for ClickHouse は、オンライン分析処理 (OLAP) 向けの列指向データベースです。Data Integration を使用すると、ApsaraDB for ClickHouse との間でデータを同期できます。このトピックでは、オフラインモードで単一の MaxCompute テーブルから ApsaraDB for ClickHouse にデータを同期する例を示し、完全なプロセスを説明します。
制限事項
単一テーブルから ClickHouse へのオフライン同期は、ApsaraDB for ClickHouse のみをサポートします。
前提条件
サーバーレスリソースグループ または Data Integration 専用リソースグループ を購入済みであること。
MaxCompute データソースと ClickHouse データソースを作成済みであること。詳細については、「データソース構成」をご参照ください。
リソースグループとデータソース間のネットワーク接続を確立済みであること。詳細については、「ネットワーク接続ソリューション」をご参照ください。
手順
このトピックでは、DataStudio (新バージョン) UI でオフライン同期タスクを構成する例を示します。
1. オフライン同期ノードを作成する
DataWorks コンソールの [Workspaces] ページに移動します。上部のナビゲーションバーで、目的のリージョンを選択します。目的のワークスペースを見つけ、[アクション] 列で を選択します。
左側のナビゲーションウィンドウで、
アイコンをクリックします。[プロジェクトディレクトリ] の右側にある
アイコンをクリックし、 を選択します。オフライン同期ノードのカスタム [名前] を入力し、[確認] をクリックします。
2. ネットワークとリソースを構成する
[ネットワークとリソースの構成] ステップで、同期タスクの [ソース]、[リソースグループ]、[宛先] を選択します。[タスクリソース使用量] に特定の数の CU を割り当てることができます。
[ソース] には、追加した
MaxComputeデータソースを選択します。[宛先] には、追加した
ClickHouseデータソースを選択します。[リソースグループ] には、
MaxComputeとClickHouseの両方のデータソースに接続されているリソースグループを選択します。タスクリソースの [使用量] に特定の数の CU を割り当てることができます。
[ソース] と [宛先] カードで、[接続をテスト] をクリックします。

ソースと宛先への接続が成功したことを確認したら、[次へ] をクリックします。
3. ソースと宛先を構成する
ソース (MaxCompute) パラメーターを構成する
以下は、ソースの MaxCompute テーブルを構成するための主要なパラメーターです。

構成項目 | 構成の詳細 |
データソース | 前のステップで選択した MaxCompute データソースがデフォルトで表示されます。DataWorks ワークスペースが標準モードの場合、開発プロジェクトと本番プロジェクトの名前は別々に表示されます。 |
トンネルリソースグループ | このチュートリアルでは、デフォルトで [パブリック伝送リソース] を使用します。専用のトンネルクォータ がある場合は、ドロップダウンリストから選択できます。 |
テーブル | 同期する MaxCompute テーブルを選択します。DataWorks ワークスペースが標準モードの場合、MaxCompute の開発環境と本番環境の両方に同じ名前とスキーマを持つ MaxCompute テーブルが存在することを確認してください。 説明 もし:
|
フィルターメソッド | [パーティションフィルター] または [データフィルタリング] を使用してデータをフィルターできます。
|
パーティション情報 | このパラメーターは、[フィルターメソッド] を [パーティションフィルター] に設定した場合に必要です。パーティションキー列の値を入力できます。
|
パーティションが存在しない場合 | パーティションが存在しない場合に同期タスクを処理するポリシー。次のオプションがサポートされています:
|
宛先 (ClickHouse) パラメーターを構成する
以下は、宛先の ClickHouse テーブルを構成するための主要なパラメーターです。

構成項目 | 構成の詳細 |
データソース | 前のステップで選択した ClickHouse データソースがデフォルトで表示されます。 |
テーブル | 同期する ClickHouse テーブルを選択します。同期するテーブルが ClickHouse データソースの開発環境と本番環境で同じテーブルスキーマを持つことを確認することをお勧めします。 説明 このセクションには、ClickHouse データソースの開発環境のテーブルのリストが表示されます。ClickHouse データソースの開発環境と本番環境でテーブル定義が異なる場合、開発環境で正しく構成されていても、タスクが本番環境に送信された後にテーブルまたは列が存在しないと報告されることがあります。 |
プライマリキーまたはユニークキーの競合処理 |
|
Pre-SQL 文 | データ同期タスクの実行前後に、必要に応じて SQL 文を実行できます。たとえば、日単位でデータを同期する前に、対応する日次パーティションのデータをクリアして、データが書き込まれる前にパーティションが空であることを確認できます。 |
インポート後の文 | |
バッチサイズ (バイト) | データはバッチで ClickHouse に書き込まれます。これらのパラメーターは、バッチサイズのバイト単位の上限とレコード数を指定します。読み取りデータがバイト制限またはレコード数制限のいずれかに達すると、バッチは完了したと見なされます。完了した各バッチは ClickHouse に書き込まれます。 バッチサイズ (バイト) を 16777216 (16 MB) に設定することをお勧めします。バッチサイズ (レコード) は、単一レコードのサイズに基づいて大きな値に設定することをお勧めします。これにより、バッチ書き込みはバイト単位のバッチサイズによってトリガーされます。 たとえば、単一レコードが 1 KB の場合、バッチサイズ (バイト) を 16777216 (16 MB) に、バッチサイズ (レコード) を 20000 (16 MB/1 KB = 16384 より大きい) に設定します。この場合、書き込みはバイト単位のバッチサイズによってトリガーされ、16 MB ごとに書き込みが発生します。 |
バッチサイズ (レコード) | |
ClickHouse へのバッチ書き込みが異常な場合 | ClickHouse へのバッチ書き込みが異常な場合、エラー処理ポリシーを選択できます:
|
4. フィールドマッピングを構成する
ソースと宛先を選択した後、それらの間の列マッピングを指定する必要があります。[名前でマッピング]、[位置でマッピング]、[マッピング解除]、または [自動レイアウト] を選択できます。
5. チャネル制御を構成する
オフライン同期タスクは、[タスク並行性] や [ダーティデータポリシー] などの設定をサポートしています。このチュートリアルでは、[ダーティデータポリシー] は [ダーティデータを許容しない] に設定され、他の構成ではデフォルト設定が使用されます。詳細については、「コードレス UI でオフライン同期タスクを構成する」をご参照ください。
6. デバッグタスクを構成して実行する
オフライン同期ノード編集ページの右側で、[デバッグ構成] をクリックします。デバッグ実行のために [リソースグループ] と [スクリプトパラメーター] を設定します。次に、上部のツールバーで [実行] をクリックして、同期リンクが正常に実行されるかどうかをテストします。
左側のナビゲーションウィンドウで、
アイコンをクリックします。[個人用ディレクトリ] の右側にある
アイコンをクリックし、.sql拡張子を持つファイルを作成します。次の SQL 文を実行して、宛先テーブルのデータをクエリし、期待どおりかどうかを確認します。説明このクエリメソッドでは、ターゲットの ClickHouse を計算リソースとして DataWorks にアタッチする 必要があります。
.sqlファイル編集ページの右側で、[デバッグ構成] をクリックします。データソースの [タイプ]、[計算リソース]、[リソースグループ] を指定します。次に、上部のツールバーで [実行] をクリックします。
SELECT * FROM <clickhouse_target_table_name> LIMIT 20;
7. スケジューリングを構成してノードを公開する
オフライン同期タスクページの右側にある [スケジューリング構成] をクリックします。定期的な実行に必要な スケジューリング構成 パラメーターを構成した後、上部のツールバーで [公開] をクリックし、画面の指示に従って 公開 プロセスを完了します。
付録: メモリパラメーターの調整
並行処理を増やしても同期速度が大幅に向上しない場合は、同期タスクのメモリパラメーターを手動で調整できます。次のステップを実行します:
オフライン同期タスクページの上部にあるツールバーで、[コードエディタ] をクリックして、タスクをコードレス UI からコードエディタに切り替えます。

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