日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

通過外表導入至數倉版

更新時間:

云原生數據倉庫 AnalyticDB MySQL 版支持通過外表讀取并導入MaxCompute數據。通過外表導入數據可以最大限度地利用集群資源,實現高性能數據導入。您也可以進一步選擇通過Tunnel方式和Storage API兩種方式訪問并導入MaxCompute數據,相較于Tunnel方式,Storage API方式可以提高數據訪問和處理的效率。本文主要介紹如何通過外表將MaxCompute數據導入AnalyticDB for MySQL數倉版

前提條件

  • 使用Storage API方式訪問并導入MaxCompute數據時,還需滿足以下條件:

    • 已提交Storage API功能的試用申請,并獲得試用資格。詳情請參見試用申請

    • 集群內版本需為3.1.10.2及以上版本。

    • 集群所在地域為華東1(杭州)、華東2(上海)、華南1(深圳)或華北2(北京)。

功能介紹

AnalyticDB for MySQL集群默認使用Tunnel方式訪問MaxCompute數據,3.1.10.2及以上內核版本集群支持使用Storage API方式訪問MaxCompute數據。相較于Tunnel方式,Storage API方式可以縮短生成查詢計劃的耗時和將MaxCompute外表數據導入AnalyticDB for MySQL內表的耗時,提升OLAP查詢的查詢性能和數據導入性能。

Storage API方式與Tunnel方式的區別如下:

訪問方式

集群版本

地域

費用

數據訪問效率

Tunnel方式

無限制

無限制

免費

使用公共數據傳輸服務資源組,該資源會被該地域所有項目共享使用,數據訪問和導入速度慢。

Storage API方式

3.1.10.2及以上版本

  • 華東1(杭州)

  • 華東2(上海)

  • 華南1(深圳)

  • 華北2(北京)

需購買獨享數據傳輸服務資源組,會產生費用。獨享數據傳輸服務資源組的計費規則請參見獨享數據傳輸服務資源組定價

使用獨享數據傳輸服務資源組,為項目配置后,該資源僅供當前項目使用,減少數據訪問和導入時間,提供更高的數據傳輸速度。

示例數據

本文示例中的MaxCompute項目為odps_project1,示例表odps_nopart_import_test。示例如下:

CREATE TABLE IF NOT EXISTS odps_nopart_import_test (
    id int,
    name string,
    age int)
partitioned by (dt string);

odps_nopart_import_test表中添加分區,示例如下:

ALTER TABLE odps_nopart_import_test 
ADD 
PARTITION (dt='202207');

向分區中添加數據,示例如下:

INSERT INTO odps_project1.odps_nopart_import_test 
PARTITION (dt='202207') 
VALUES (1,'james',10),(2,'bond',20),(3,'jack',30),(4,'lucy',40);

Tunnel方式訪問MaxCompute

  1. 連接目標AnalyticDB for MySQL集群。詳細操作步驟,請參見連接集群

  2. 創建目標數據庫。

    CREATE database test_adb;
  3. 創建MaxCompute外表。本文以odps_nopart_import_test_external_table為例。

    CREATE TABLE IF NOT EXISTS odps_nopart_import_test_external_table
    (
        id int,
        name string,
        age int,
        dt string
    )
     ENGINE='ODPS'
     TABLE_PROPERTIES='{
     "endpoint":"http://service.cn.maxcompute.aliyun-inc.com/api",
     "accessid":"L*******FsE",
     "accesskey":"CcwF********iWjv",
     "partition_column":"dt",
     "project_name":"odps_project1",
     "table_name":"odps_nopart_import_test"
     }';                 

    參數

    說明

    ENGINE=’ODPS’

    外表的存儲引擎。讀寫MaxCompute數據時,取值為ODPS。

    endpoint

    MaxCompute的EndPoint(域名節點)

    說明

    目前僅支持AnalyticDB for MySQL通過MaxCompute的VPC網絡Endpoint訪問MaxCompute。

    查詢各地域VPC網絡的Endpoint,請參見各地域Endpoint對照表(阿里云VPC網絡連接方式)

    accessid

    阿里云賬號或者具備MaxCompute訪問權限的RAM用戶的AccessKey ID。

    如何獲取AccessKey ID和AccessKey Secret,請參見賬號與權限

    accesskey

    阿里云賬號或者具備MaxCompute訪問權限的RAM用戶的AccessKey Secret。

    如何獲取AccessKey ID和AccessKey Secret,請參見賬號與權限

    partition_column

    本文使用的示例是創建分區表的示例,所以需要配置partition_column。如果MaxCompute的表是非分區表,那么AnalyticDB for MySQL中也需要創建非分區表,此時無需配置partition_column

    project_name

    MaxCompute中的工作空間名稱。

    table_name

    MaxCompute中的數據源表名。

  4. test_adb數據庫中創建表adb_nopart_import_test,用于存儲從MaxCompute中導入的數據。

    CREATE TABLE IF NOT EXISTS adb_nopart_import_test
    (   id int,
        name string,
        age int,
        dt string,
        PRIMARY KEY(id,dt)
    )
    DISTRIBUTED BY HASH(id)
    PARTITION BY VALUE('dt') LIFECYCLE 30;
  5. 導入數據。

    • 方式一:執行INSERT INTO導入數據,當主鍵重復時會自動忽略當前寫入數據,不做更新,作用等同于INSERT IGNORE INTO,詳情請參見INSERT INTO。示例如下:

      INSERT INTO adb_nopart_import_test
      SELECT * FROM odps_nopart_import_test_external_table; 

      通過SELECT查詢寫入表中的數據,示例如下:

      SELECT * FROM adb_nopart_import_test;

      返回結果如下:

      +------+-------+------+---------+
      | id   | name  | age  |   dt    |
      +------+-------+------+---------+
      |    1 | james |   10 |  202207 |
      |    2 | bond  |   20 |  202207 |
      |    3 | jack  |   30 |  202207 |
      |    4 | lucy  |   40 |  202207 |
      +------+-------+------+---------+

      如果需要將特定分區的數據導入adb_nopart_import_test,可以執行:

      INSERT INTO adb_nopart_import_test
      SELECT * FROM odps_nopart_import_test_external_table
      WHERE dt = '202207';
    • 方式二:執行INSERT OVERWRITE導入數據,會覆蓋表中原有的數據。示例如下:

      INSERT OVERWRITE adb_nopart_import_test
      SELECT * FROM odps_nopart_import_test_external_table;
    • 方式三:異步執行INSERT OVERWRITE導入數據。通常使用SUBMIT JOB提交異步任務,由后臺調度,可以在寫入任務前增加Hint加速寫入任務。詳情請參見異步寫入。示例如下:

      SUBMIT JOB 
      INSERT OVERWRITE adb_nopart_import_test 
      SELECT * FROM odps_nopart_import_test_external_table;  

      返回結果如下:

      +---------------------------------------+
      | job_id                                |
      +---------------------------------------+
      | 2020112122202917203100908203303****** |

      關于異步提交任務詳情請參見異步提交導入任務

Storage API方式訪問MaxCompute

使用Storage API方式訪問MaxCompute數據時,您需確保:

  • 已提交Storage API功能的試用申請,并獲得試用資格。詳情請參見試用申請

  • 集群內版本需為3.1.10.2及以上版本。

  • 集群所在地域為華東1(杭州)、華東2(上海)、華南1(深圳)或華北2(北京)。

費用說明

使用Storage API方式訪問MaxCompute外表數據需購買獨享數據傳輸服務資源組,會產生費用。獨享數據傳輸服務資源組的計費規則請參見獨享數據傳輸服務資源組定價

購買并配置獨享數據傳輸服務資源組

  1. 登錄MaxCompute控制臺購買獨享數據傳輸服務資源組。具體操作,請參見購買獨享數據服務資源組

  2. 項目管理頁面,選擇目標MaxCompute項目并單擊操作列的管理

  3. 單擊基礎屬性區域的編輯,在數據傳輸服務下拉列表中選擇您購買的獨享資源組。

訪問MaxCompute數據

  1. 連接目標AnalyticDB for MySQL集群。詳細操作步驟,請參見連接集群

  2. 創建目標數據庫。

    CREATE database adb_demo;
  3. 創建MaxCompute外表。本文以person為例。

    CREATE TABLE IF NOT EXISTS person
    (
        id int,
        name string,
        age int,
        dt string
    )
     ENGINE='ODPS'
     TABLE_PROPERTIES='{
     "endpoint":"http://service.cn.maxcompute.aliyun-inc.com/api",
     "accessid":"L*******FsE",
     "accesskey":"CcwF********iWjv",
      "partition_column":"dt",
     "project_name":"odps_project1",
     "table_name":"odps_nopart_import_test",
     "odps_quota_name":ot_42854300324284****,
     "odps_compression_code":ZSTD
     }';                 

    更多參數,請參見參數說明

  4. 查詢數據。

    /*+ storage_api_enabled=true,odps_quota_name=ot_42854300324284****,odps_compression_code=ZSTD*/
    SELECT * FROM person;

    Hint參數說明:

    參數

    是否必填

    說明

    storage_api_enabled

    是否使用Storage API訪問MaxCompute數據。取值:

    • true:是。

    • false(默認值):否,使用Tunnel方式訪問MaxCompute數據。

    本示例需配置為true。

    說明

    您也可以使用SET ADB_CONFIG命令配置該參數。詳情請參見Config和Hint配置參數

    odps_quota_name

    購買獨享數據傳輸服務資源組的名稱。本文示例為ot_42854300324284****。獨享數據傳輸服務資源組的名稱查看方法,請參見查看Quota名稱

    說明

    您也可以使用SET ADB_CONFIG命令或在TABLE_PROPERTIES中配置該參數。詳情請參見Config和Hint配置參數

    odps_compression_code

    壓縮MaxCompute數據的方式。默認值為"",即不壓縮MaxCompute數據。取值:

    • ZSTD

    • LZ4_FRAME

    說明

    您也可以使用SET ADB_CONFIG命令或在TABLE_PROPERTIES中配置該參數。詳情請參見Config和Hint配置參數

    返回結果如下:

    +------+-------+------+---------+
    | id   | name  | age  |   dt    |
    +------+-------+------+---------+
    |    1 | james |   10 |  202207 |
    |    2 | bond  |   20 |  202207 |
    |    3 | jack  |   30 |  202207 |
    |    4 | lucy  |   40 |  202207 |
    +------+-------+------+---------+
  5. adb_demo數據庫中創建表test用于存儲從MaxCompute中導入的數據。

    CREATE TABLE IF NOT EXISTS test
    (   id int,
        name string,
        age int,
        dt string,
        PRIMARY KEY(id,dt)
    )
    DISTRIBUTED BY HASH(id)
    PARTITION BY VALUE('dt') LIFECYCLE 30;
  6. 導入數據。

    • 方式一:執行INSERT INTO導入數據,當主鍵重復時會自動忽略當前寫入數據,不做更新,作用等同于INSERT IGNORE INTO,詳情請參見INSERT INTO。示例如下:

      /*+ storage_api_enabled=true,odps_quota_name=ot_42854300324284****,odps_compression_code=ZSTD*/
      INSERT INTO test SELECT * FROM person;   

      通過SELECT查詢寫入表中的數據,示例如下:

      SELECT * FROM test;

      返回結果如下:

      +------+-------+------+---------+
      | id   | name  | age  |   dt    |
      +------+-------+------+---------+
      |    1 | james |   10 |  202207 |
      |    2 | bond  |   20 |  202207 |
      |    3 | jack  |   30 |  202207 |
      |    4 | lucy  |   40 |  202207 |
      +------+-------+------+---------+

      如果需要將特定分區的數據導入test,可以執行:

      /*+ storage_api_enabled=true,odps_quota_name=ot_42854300324284****,odps_compression_code=ZSTD*/
      INSERT INTO test SELECT * FROM person WHERE dt = '202207'; 
    • 方式二:執行INSERT OVERWRITE導入數據,會覆蓋表中原有的數據。示例如下:

      /*+ storage_api_enabled=true,odps_quota_name=ot_42854300324284****,odps_compression_code=ZSTD*/
      INSERT OVERWRITE test SELECT * FROM person;
    • 方式三:異步執行INSERT OVERWRITE導入數據。通常使用SUBMIT JOB提交異步任務,由后臺調度,可以在寫入任務前增加Hint加速寫入任務。詳情請參見異步寫入。示例如下:

      /*+ storage_api_enabled=true,odps_quota_name=ot_42854300324284****,odps_compression_code=ZSTD*/
      SUBMIT JOB INSERT OVERWRITE test SELECT * FROM person;  

      返回結果如下:

      +---------------------------------------+
      | job_id                                |
      +---------------------------------------+
      | 2020112122202917203100908203303****** |

      關于異步提交任務,詳情請參見異步提交導入任務

    Hint參數說明,請參見Hint參數說明

  7. (可選)查看是否已使用Storage API方式訪問MaxCompute數據。具體操作,請參見資源觀測

    表訪問熱度(并發數)訪問來源IP(B/S)指標區域,將使用方式選擇為Storage API讀Storage API寫,若指標區域有數據,則說明使用了Storage API方式訪問MaxCompute數據;若無,則說明未使用Storage API方式,而默認使用了Tunnel方式訪問MaxCompute數據。