このトピックでは、クロスプロジェクトデータアクセスを使用して、異なるリージョンの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権限をRAMユーザーまたはRAMロールに付与できます。SELECT権限と、ターゲットプロジェクトに対するCreateInstance権限とCreateTable権限を持っていることを確認します。 権限を付与する方法の詳細については、方法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アカウントの削除 (プロジェクトレベル) 」をご参照ください。