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

MaxCompute:クロスプロジェクトデータアクセスを使用して、異なるリージョンのMaxComputeプロジェクトからデータを移行する

最終更新日:Jan 17, 2025

このトピックでは、クロスプロジェクトデータアクセスを使用して、異なるリージョンのMaxComputeプロジェクト間でデータを移行する方法について説明します。 クロスプロジェクトデータアクセスを使用して、異なるリージョンの同じAlibaba Cloudアカウントまたは異なるリージョンの異なるAlibaba Cloudアカウント内のMaxComputeプロジェクト間でデータを移行できます。

制限

このソリューションは、中国本土リージョンのMaxComputeプロジェクト間のデータ移行にのみ適しています。

異なるリージョンの同じAlibaba Cloudアカウント内のMaxComputeプロジェクト間でデータを移行する

テーブルデータを、projectAという名前のソースプロジェクトからprojectBという名前のターゲットプロジェクトに移行します。 プロジェクトの所有者は同じAlibaba Cloudアカウントです。

  • Alibaba Cloudアカウントは、ターゲットプロジェクトに直接移動し、ターゲットテーブルを作成できます。

    テーブル作成中のデータのコピー

    -- Go to projectB.
    use projectB;
    
    set odps.namespace.schema=false;
    -- Create a table based on the source table in projectA and copy data from the source table to the new table. 
    create table [if not exists] <table_name> [lifecycle <days>] as select * from projectA.<table_name>; 

    テーブル作成後のデータのコピー

    -- Go to projectB.
    use projectB;
    
    set odps.namespace.schema=false;
    -- Create a table that has the same schema as the source table but do not copy data. 
    create table [if not exists] <table_name> like projectA.<table_name> [lifecycle <days>];
    -- Write data from the source table to the new table in the destination project.
    insert {into|overwrite} table <table_name> [partition (<pt_spec>)] [(<col_name> [,<col_name> ...)]]
    select * from projectA.<table_name> [zorder by <zcol_name> [, <zcol_name> ...]];

    テーブルの作成方法の詳細については、「テーブル操作」をご参照ください。

  • RAMユーザーまたはRAMロールとして操作を実行する場合は、ソースプロジェクトのステータスがnormalであり、オペレーターがソースプロジェクトのソーステーブルに対するSELECT権限と、ターゲットプロジェクトに対するCreateInstance権限とCreateTable権限を持っていることを確認します。 権限を付与する方法の詳細については、

    . 次のいずれかの方法を使用して、ソースプロジェクトのソーステーブルに対するSELECT権限をRAMユーザーまたはRAMロールに付与できます。

    • 方法1: RAMユーザーをprojectAに追加します。 詳細については、「ユーザーの計画と管理」をご参照ください。 次に、必要なリソースに対するRAMユーザーの権限を付与します。 詳細については、「コマンドを使用したユーザー権限の管理」をご参照ください。

    • 方法2: パッケージベースのアクセス制御メカニズムを使用して、リージョン間でプロジェクトにアクセスします。 Alibaba Cloudアカウントを使用して、projectAのリソースをPackageAに圧縮し、PackageAをprojectBにインストールできるようにします。 projectBにPackageAをインストールした後、projectBの演算子にPackageAの読み取り権限を付与します。 詳細については、「パッケージに基づくクロスプロジェクトリソースアクセス」をご参照ください。

異なるリージョンの異なるAlibaba Cloudアカウント内のMaxComputeプロジェクト間でデータを移行する

手順1: ターゲットプロジェクトの所有者であるAlibaba Cloudアカウントに、ソースプロジェクトのデータの読み取り権限を付与する

MaxComputeでは、次のいずれかの方法を使用して、Alibaba Cloudアカウント全体のプロジェクトにアクセスできます。

  • 方法1: projectBの所有者であるAlibaba CloudアカウントprojectB_owner@aliyunid.comをprojectAに追加します。 詳細については、「ユーザーの計画と管理」をご参照ください。 次に、必要なリソースに対するAlibaba Cloudアカウントの権限を付与します。 詳細については、「コマンドを使用したユーザー権限の管理」をご参照ください。 これにより、Alibaba CloudアカウントprojectB_owner@aliyunid.comはprojectAにアクセスできます。

    -- Go to the source project named projectA.
    use projectA;
    -- Add the Alibaba Cloud account projectB_owner@aliyunid.com, which is the owner of the destination project named projectB, to projectA.
    add user ALIYUN$projectB_owner@aliyunid.com;
    -- Grant the CreateTable and CreateInstance permissions on the source project to the Alibaba Cloud account.
    grant CreateTable,CreateInstance on project projectA to user ALIYUN$projectB_owner@aliyunid.com;
    -- Grant the SELECT permission on the source table to the Alibaba Cloud account.
    grant Select on table <tablename> to user ALIYUN$projectB_owner@aliyunid.com;
  • 方法2: パッケージベースのアクセス制御メカニズムを使用して、Alibaba Cloudアカウント全体のプロジェクトにアクセスします。 Alibaba CloudアカウントA (projectAの所有者) を使用して、projectAのリソースをPackageAに圧縮し、Alibaba CloudアカウントB (projectBの所有者) がPackageAをprojectBにインストールできるようにします。 Alibaba CloudアカウントBがprojectBにPackageAをインストールした後、Alibaba CloudアカウントBはPackageAのリソースにアクセスできます。 詳細については、「パッケージに基づくクロスプロジェクトリソースアクセス」をご参照ください。

ステップ2: データの移行

Alibaba Cloudアカウントは、ターゲットプロジェクトに直接移動し、ターゲットテーブルを作成できます。

テーブル作成中のデータのコピー

-- Go to projectB.
use projectB;

set odps.namespace.schema=false;
-- Create a table based on the source table in projectA and copy data from the source table to the new table. 
create table [if not exists] <table_name> [lifecycle <days>] as select * from projectA.<table_name>; 

テーブル作成後のデータのコピー

-- Go to projectB.
use projectB;

set odps.namespace.schema=false;
-- Create a table that has the same schema as the source table but do not copy data. 
create table [if not exists] <table_name> like projectA.<table_name> [lifecycle <days>];
-- Write data from the source table to the new table in the destination project.
insert {into|overwrite} table <table_name> [partition (<pt_spec>)] [(<col_name> [,<col_name> ...)]]
select * from projectA.<table_name> [zorder by <zcol_name> [, <zcol_name> ...]];

テーブルの作成方法の詳細については、「テーブル操作」をご参照ください。

重要

データのセキュリティを確保するため、データ移行が完了した後、移行先プロジェクトの所有者であるAlibaba Cloudアカウントを移行元プロジェクトから削除することを推奨します。 詳細については、「Alibaba Cloudアカウントの削除 (プロジェクトレベル) 」をご参照ください。