DataWorks のデータ統合機能を使用して、Tablestore から MaxCompute に全量データをエクスポートし、オフラインでの分析と処理を行います。
前提条件
データをエクスポートする前に、次の操作を完了してください。
ソースとなる Tablestore テーブルのインスタンス名、インスタンスエンドポイント、およびリージョン ID を取得します。
宛先として使用するMaxCompute プロジェクトを作成します。
Alibaba Cloud アカウントまたは RAM ユーザーのAccessKey を作成します。 アカウントまたはユーザーが Tablestore および MaxCompute にアクセスする権限があることを確認してください。
DataWorks を有効化し、MaxCompute または Tablestore インスタンスが配置されているリージョンにワークスペースを作成します。
サーバーレスリソースグループを作成し、ワークスペースにアタッチします。 課金の詳細については、「サーバーレスリソースグループの課金」をご参照ください。
DataWorks ワークスペースと Tablestore インスタンスが異なるリージョンにある場合は、VPC ピアリング接続を作成して、リージョン間のネットワーク接続を有効にする必要があります。
操作手順
以下の手順に従って、Tablestore から MaxCompute への全量データのエクスポートを設定します。
手順1: Tablestore データソースの追加
DataWorks で Tablestore データソースを追加して、ソーステーブルとの接続を確立します。
DataWorks コンソールにログインします。ターゲットリージョンに切り替えます。左側のナビゲーションウィンドウで、 を選択します。ドロップダウンリストからワークスペースを選択し、[データ統合へ移動] をクリックします。
左側のナビゲーションウィンドウで、[データソース] をクリックします。
[データソースリスト] ページで、[データソースの追加] をクリックします。
[データソースの追加] ダイアログボックスで、データソースタイプとして [Tablestore] を検索して選択します。
[OTS データソースの追加] ダイアログボックスで、次の表の説明に従ってデータソースパラメーターを設定します。
パラメーター
説明
データソース名
データソース名は、文字、数字、アンダースコア (_) の組み合わせである必要があります。数字またはアンダースコア (_) で始めることはできません。
データソースの説明
データソースの簡単な説明。説明の長さは 80 文字を超えることはできません。
リージョン
Tablestore インスタンスが存在するリージョンを選択します。
Tablestore インスタンス名
Tablestore インスタンスの名前。
エンドポイント
Tablestore インスタンスのエンドポイント。VPC エンドポイントを使用します。
AccessKey ID
Alibaba Cloud アカウントまたは RAM ユーザーの AccessKey ID と AccessKey Secret。
AccessKey Secret
リソースグループの接続性をテストします。
データソースを作成するときは、リソースグループの接続性をテストして、同期タスクのリソースグループがデータソースに接続できることを確認する必要があります。そうしないと、データ同期タスクを実行できません。
[接続設定] セクションで、リソースグループの [接続ステータス] 列にある [接続性のテスト] をクリックします。
接続性テストに合格すると、[接続ステータス] が [接続済み] に変わります。[完了] をクリックします。新しいデータソースがデータソースリストに表示されます。
接続性テストが [失敗] した場合は、[接続診断ツール] を使用して問題をトラブルシューティングします。
手順2: MaxCompute データソースの追加
宛先となる MaxCompute データソースを追加して設定します。
もう一度 [データソースを追加] をクリックします。 データソースタイプとして [MaxCompute] を選択し、パラメーターを設定します。
パラメーター
説明
データソース名
名前には、文字、数字、アンダースコア (_) を使用できます。ただし、先頭に数字またはアンダースコア (_) は使用できません。
[データソースの説明]
データソースの簡単な説明 (最大 80 文字)。
認証方法
この値はデフォルトで [Alibaba Cloud アカウントとAlibaba Cloud RAMロール] に設定されており、変更できません。
[所属 Alibaba Cloud アカウント]
[現在の Alibaba Cloud アカウント]: 指定されたリージョンで現在のアカウントの[MaxCompute プロジェクト名]とデフォルトアクセス主体を選択します。
[その他の Alibaba Cloud アカウント]:指定されたリージョンの別のアカウントの [Alibaba Cloud アカウントのUID]、[MaxComputeプロジェクト]、および [RAMロール] を入力します。
リージョン
MaxCompute プロジェクトが配置されているリージョン。
エンドポイント
デフォルト値は [自動適応] です。 必要に応じて [カスタム設定] を選択することもできます。
パラメーターを設定し、接続テストに成功したら、[完了] をクリックしてデータソースを追加します。
手順3: バッチ同期タスクの設定
データ同期タスクを作成し、Tablestore から MaxCompute にデータをエクスポートするための転送ルールとフィールドマッピングを定義します。
タスクノードの作成
[データ開発] ページに移動します。
DataWorks コンソールにログインします。
上部メニューで、リソースグループとリージョンを選択します。
左側メニューで、をクリックします。
対象のワークスペースを選択し、[Data Studioへ] をクリックします。
Data Studio コンソールの データ開発 ページで、プロジェクトディレクトリ の右側にある
アイコンをクリックし、次に を選択します。[ノードを作成] ダイアログボックスで、[パス] を選択します。 データソースを [Tablestore] に、宛先を [MaxCompute (ODPS)] に設定します。 [名前] を入力し、[OK] をクリックします。
同期タスクの設定
プロジェクトディレクトリ で、新しく作成されたバッチ同期タスクノードをクリックして開きます。 タスクは、コードレス UI またはコードエディターのいずれかを使用して設定できます。
コードレス UI (デフォルト)
コードレス UI で次の項目を設定します。
データソース:ソースと宛先のデータソースを選択します。
[実行中のリソース]:リソースグループを選択します。 システムは自動的にデータソースの接続性をテストします。
[データソース]:
[テーブル]:ドロップダウンリストからソースデータテーブルを選択します。
[プライマリキー範囲分布 (開始)]:データの読み取りを開始するプライマリキー範囲の開始点です。 値は JSON 配列形式である必要があります。
inf_minは負の無限大を表します。たとえば、プライマリキーが
idという名前のint型の列とnameという名前のstring型の列で構成されている場合、サンプル設定は次のようになります。特定のプライマリキー範囲
全量データ
[ { "type": "int", "value": "000" }, { "type": "string", "value": "aaa" } ][ { "type": "inf_min" }, { "type": "inf_min" } ][プライマリキー範囲分布 (終了)]:データの読み取りを終了するプライマリキー範囲の終点です。 値は JSON 配列形式である必要があります。
inf_maxは正の無限大を表します。たとえば、プライマリキーが
idという名前のint型の列とnameという名前のstring型の列で構成されている場合、サンプル設定は次のようになります。特定のプライマリキー範囲
全量データ
[ { "type": "int", "value": "999" }, { "type": "string", "value": "zzz" } ][ { "type": "inf_max" }, { "type": "inf_max" } ][チャンク構成情報]:JSON 配列形式のカスタム分割設定。 ほとんどの場合、このパラメーターを設定する必要はありません (
[]に設定します)。Tablestore インスタンスでデータホットスポットが発生し、Tablestore Reader の自動分割ポリシーが効果的でない場合は、カスタム分割ルールを使用することを推奨します。 分割では、プライマリキー範囲内の分割点を指定します。 すべてのプライマリキーではなく、シャードキーのみを設定する必要があります。
[データ転送先]:次の項目を設定します。 他のパラメーターはデフォルト値のままにするか、必要に応じて変更できます。
[本番プロジェクト名]:宛先データソースに関連付けられている MaxCompute プロジェクトの名前が表示されます。
[Tunnel リソースグループ]:デフォルトでは、MaxCompute の無料クォータである [共通の転送リソース] が選択されています。 必要に応じて、専用のトンネルリソースグループを選択できます。
[テーブル]: 宛先テーブルを選択します。ワンクリックでターゲットテーブルスキーマを生成 をクリックして、宛先テーブルを自動的に生成できます。
[パーティション]:同期されたデータは、指定された日付のパーティションに保存されます。 これは、日次増分同期に使用できます。
[書き込みモード]:既存のデータをクリアするか、新しいデータを追記するかを選択します。
[宛先フィールドマッピング]:ソースから宛先テーブルへのフィールドをマッピングします。 システムはソーステーブルのフィールドに基づいてデフォルトのマッピングを提供しますが、必要に応じて変更できます。
設定を完了したら、ページ上部の保存をクリックします。
コードエディター
スクリプトを編集するには、ページの上部にある コードエディタ をクリックします。
次のサンプルスクリプトは、プライマリキーがidという名前のint型の列とnameという名前のstring型の列で構成されているソースデータテーブルを対象としたものです。 属性列はageという名前のint型のフィールドです。 スクリプトでは、datasourceとtableパラメーターの値を実際の値に置き換えてください。
{
"type": "job",
"version": "2.0",
"steps": [
{
"stepType": "ots",
"parameter": {
"datasource": "source_data",
"column": [
{
"name": "id",
"type": "INTEGER"
},
{
"name": "name",
"type": "STRING"
},
{
"name": "age",
"type": "INTEGER"
}
],
"range": {
"begin": [
{
"type": "inf_min"
},
{
"type": "inf_min"
}
],
"end": [
{
"type": "inf_max"
},
{
"type": "inf_max"
}
],
"split": []
},
"table": "source_table",
"newVersion": "true"
},
"name": "Reader",
"category": "reader"
},
{
"stepType": "odps",
"parameter": {
"partition": "pt=${bizdate}",
"truncate": true,
"datasource": "target_data",
"tunnelQuota": "default",
"column": [
"id",
"name",
"age"
],
"emptyAsNull": false,
"guid": null,
"table": "source_table",
"consistencyCommit": false
},
"name": "Writer",
"category": "writer"
}
],
"setting": {
"errorLimit": {
"record": "0"
},
"speed": {
"concurrent": 2,
"throttle": false
}
},
"order": {
"hops": [
{
"from": "Reader",
"to": "Writer"
}
]
}
}スクリプトの編集が完了したら、ページ上部の保存をクリックします。
同期タスクの実行
ページの右側で、[デバッグ設定] をクリックし、実行に使用するリソースグループを選択して、[スクリプトパラメーター] を追加します。
bizdate:MaxCompute の宛先テーブルのデータパーティション。例:
20251120。
ページ上部の [実行] をクリックして、同期タスクを開始します。
手順4: 同期結果の表示
タスクの実行後、ログで実行ステータスを確認し、DataWorks コンソールで同期されたデータを確認します。
ページ下部でタスクの実行ステータスと結果を表示します。次のログ情報は、同期タスクが正常に実行されたことを示しています。
2025-11-18 11:16:23 INFO Shell run successfully! 2025-11-18 11:16:23 INFO Current task status: FINISH 2025-11-18 11:16:23 INFO Cost time is: 77.208s宛先テーブルで結果を確認します。
DataWorks コンソールに移動します。 左側メニューで、 をクリックします。 次に、[データマップへ] をクリックして、宛先テーブルとそのデータを確認します。
