全部產品
Search
文件中心

MaxCompute:通過跨專案資料訪問實現不同地區MaxCompute專案資料移轉

更新時間:Jun 19, 2024

本文為您介紹如何通過跨專案資料訪問實現不同Region的MaxCompute專案資料移轉,包括兩種使用情境:同雲帳號內不同Region的專案資料移轉;不同雲帳號間不同Region的專案資料移轉。

使用限制

此方案只支援在中國內地地區間實現不同地區間的MaxCompute專案資料移轉,不支援在除中國內地地區以外的地區間使用。

同雲帳號內不同Region的專案資料移轉

將源專案(projectA)的表資料移轉至目標專案(projectB),且雲帳號內的專案Owner為同一個阿里雲帳號。

  • 阿里雲帳號操作,可直接進入目標專案,建立目標表:

    建立新表的同時複製資料

    --進入目標專案projectB;
    use projectB;
    
    set odps.namespace.schema=false;
    --基於projectA內的資料來源表建立新表並複製資料。
    create table [if not exists] <table_name> [lifecycle <days>] as select * from projectA.<table_name>; 

    建立新表後再複製資料

    --進入目標專案projectB;
    use projectB;
    
    set odps.namespace.schema=false;
    --基於資料來源表建立具備相同結構的新表但不複製資料。
    create table [if not exists] <table_name> like projectA.<table_name> [lifecycle <days>];
    --將資料來源表的資料寫入目標專案中的新表:
    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角色)操作,需要確保資料來源專案狀態為正常,且操作人擁有資料來源專案源表的Select操作許可權及目標專案的CreateInstanceCreateTable許可權。資料來源專案源表的Select操作許可權可以通過兩種方式擷取:

    • 方式一:將RAM帳號添加至資料來源專案A(操作見使用者規劃與管理),並授予需要訪問的資源的許可權(授權辦法見通過命令系統管理使用者許可權),即可實現RAM帳號對資料來源表的訪問。

    • 方式二:基於Package授權機制實現跨Region訪問專案。阿里雲帳號將資料來源專案A內的資源打包為PackageA,並設定允許目標專案projectB安裝,專案projectB安裝此PackageA後,對專案projectB內的操作人帳號授予PackageA的讀取許可權。具體操作辦法見基於Package跨專案訪問資源

不同雲帳號間不同Region的專案資料移轉

步驟一:授予目標專案Owner雲帳號對源專案資料的讀取許可權

MaxCompute支援通過以下兩種方式實現跨阿里雲帳號訪問專案:

  • 方式一:將目標專案projectB對應的Owner阿里雲帳號B(projectB_owner@aliyunid.com)添加至資料來源專案projectA(操作見使用者規劃與管理),並授予需要訪問的資源的許可權(操作見通過命令系統管理使用者許可權),即可實現阿里雲帳號B對專案A的訪問:

    --進入資料來源專案projectA;
    use projectA;
    --將目標專案(projectB)Owner的阿里雲帳號(projectB_owner@aliyunid.com)添加至源專案空間(projectA);
    add user ALIYUN$projectB_owner@aliyunid.com;
    --賦予源專案的CreateTable、CreateInstacne許可權
    grant CreateTable,CreateInstance on project projectA to user ALIYUN$projectB_owner@aliyunid.com;
    --賦予源表的Select許可權
    grant Select on table <tablename> to user ALIYUN$projectB_owner@aliyunid.com;
  • 方式二:基於Package授權機制實現跨阿里雲帳號訪問專案。資料來源專案Owner阿里雲帳號A將資料來源專案A內的資源打包為PackageA,並設定允許阿里雲帳號B下的專案B安裝,專案B安裝此PackageA後,阿里雲帳號B即可訪問PackageA內的資源。具體操作見基於Package跨專案訪問資源

步驟二:實現資料移轉

阿里雲帳號操作,可直接進入目標專案,建立目標表:

建立新表的同時複製資料

--進入目標專案projectB;
use projectB;

set odps.namespace.schema=false;
--基於projectA內的資料來源表建立新表並複製資料。
create table [if not exists] <table_name> [lifecycle <days>] as select * from projectA.<table_name>; 

建立新表後再複製資料

--進入目標專案projectB;
use projectB;

set odps.namespace.schema=false;
--基於資料來源表建立具備相同結構的新表但不複製資料。
create table [if not exists] <table_name> like projectA.<table_name> [lifecycle <days>];
--將資料來源表的資料寫入目標專案中的新表:
insert {into|overwrite} table <table_name> [partition (<pt_spec>)] [(<col_name> [,<col_name> ...)]]
select * from projectA.<table_name> [zorder by <zcol_name> [, <zcol_name> ...]];

更多建立表操作請參見表操作

重要

建議完成資料移轉後,及時將目標專案Owner阿里雲帳號從資料來源專案中移除,以保證資料安全。移除操作詳情請參見刪除阿里雲帳號使用者(專案層級)