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

MaxCompute分區(qū)表數(shù)據(jù)導(dǎo)入

本文為您介紹如何將MaxCompute分區(qū)表數(shù)據(jù)導(dǎo)入到Hologres分區(qū)表。

前提條件

背景信息

通過Hologres中的MaxCompute外表方式向Hologres導(dǎo)入數(shù)據(jù)是非常常見的數(shù)據(jù)導(dǎo)入模式。在日常工作中會經(jīng)常需要進(jìn)行數(shù)據(jù)導(dǎo)入,此時可以借助DataWorks的強(qiáng)大調(diào)度和作業(yè)編排能力,實現(xiàn)周期性調(diào)度,配置一個調(diào)度作業(yè)覆蓋數(shù)據(jù)導(dǎo)入兩個場景,詳情請參見DataWorks作業(yè)案例

考慮到作業(yè)較為復(fù)雜,所以可以利用DataWorks的遷移助手功能,將Data作業(yè)案例文件導(dǎo)入您的項目中,您即可獲得Data作業(yè)案例,之后按照您的具體業(yè)務(wù)需求更改部分參數(shù)或腳本即可,詳情請參見使用遷移工具導(dǎo)入DataWorks作業(yè)

注意事項

  • 使用臨時表的原因是為了保證原子性,只有在導(dǎo)入完成后才綁定至分區(qū)表,為了避免導(dǎo)入任務(wù)失敗時還需要重新刪除表等操作。

  • 對于更新子表分區(qū)數(shù)據(jù)場景,需要刪除子表和重新綁定臨時表放入一個事務(wù)過程中,保證該過程的事務(wù)性。

  • 使用遷移工具導(dǎo)入DataWorks作業(yè)時需滿足以下條件:

詳細(xì)操作步驟

  1. MaxCompute數(shù)據(jù)準(zhǔn)備

    1. 登錄MaxCompute控制臺

    2. 單擊左側(cè)導(dǎo)航欄數(shù)據(jù)分析

    3. SQL查詢頁面,輸入如下SQL語句用于創(chuàng)建分區(qū)表,單擊運(yùn)行

      DROP TABLE IF EXISTS odps_sale_detail;
      
      --創(chuàng)建一張分區(qū)表sale_detail。
      CREATE TABLE IF NOT EXISTS odps_sale_detail 
      (
          shop_name STRING
          ,customer_id STRING
          ,total_price DOUBLE
      )
      PARTITIONED BY 
      (
          sale_date STRING
      )
      ;
    4. SQL查詢頁面,輸入如下SQL語句用于向分區(qū)表中導(dǎo)入數(shù)據(jù),單擊運(yùn)行

      -- 向源表增加分區(qū)20210815
      ALTER TABLE odps_sale_detail ADD IF NOT EXISTS PARTITION(sale_date='20210815')
      ;
      
      -- 向分區(qū)寫入數(shù)據(jù)
      INSERT OVERWRITE TABLE odps_sale_detail PARTITION(sale_date='20210815') VALUES 
      ('s1','c1',100.1),
      ('s2','c2',100.2),
      ('s3','c3',100.3)
      ;
      
      -- 向源表增加分區(qū)20210816
      ALTER TABLE odps_sale_detail ADD IF NOT EXISTS PARTITION(sale_date='20210816')
      ;
      
      -- 向分區(qū)寫入數(shù)據(jù)
      INSERT OVERWRITE TABLE odps_sale_detail PARTITION(sale_date='20210816') VALUES 
      ('s1','c1',100.1),
      ('s2','c2',100.2),
      ('s3','c3',100.3)
      ;
      
      -- 向源表增加分區(qū)20210817
      ALTER TABLE odps_sale_detail ADD IF NOT EXISTS PARTITION(sale_date='20210817')
      ;
      
      -- 向分區(qū)寫入數(shù)據(jù)
      INSERT OVERWRITE TABLE odps_sale_detail PARTITION(sale_date='20210817') VALUES 
      ('s1','c1',100.1),
      ('s2','c2',100.2),
      ('s3','c3',100.3)
      ;
      
      -- 向源表增加分區(qū)20210818
      ALTER TABLE odps_sale_detail ADD IF NOT EXISTS PARTITION(sale_date='20210818')
      ;
      
      -- 向分區(qū)寫入數(shù)據(jù)
      INSERT OVERWRITE TABLE odps_sale_detail PARTITION(sale_date='20210818') VALUES 
      ('s1','c1',100.1),
      ('s2','c2',100.2),
      ('s3','c3',100.3)
      ;
  2. Hologres中建表

    • 創(chuàng)建外部表

      1. 登錄數(shù)據(jù)庫

        1. 在HoloWeb開發(fā)頁面,單擊元數(shù)據(jù)管理

        2. 元數(shù)據(jù)管理頁面,雙擊左側(cè)目錄樹中已創(chuàng)建成功的數(shù)據(jù)庫名稱,單擊確認(rèn)登錄數(shù)據(jù)庫

      2. 創(chuàng)建外部表

        1. SQL編輯器頁面,單擊左上角的image新建SQL查詢。

        2. 在新增的臨時Query查詢頁面,選擇已創(chuàng)建的實例名數(shù)據(jù)庫后,在SQL查詢的編輯框輸入如下語句,單擊運(yùn)行

          DROP FOREIGN TABLE IF EXISTS odps_sale_detail;
          
          -- 創(chuàng)建外部表
          IMPORT FOREIGN SCHEMA maxcompute_project LIMIT to
          (
              odps_sale_detail
          ) 
          FROM SERVER odps_server INTO public 
          OPTIONS(if_table_exist 'error',if_unsupported_type 'error');
    • 創(chuàng)建分區(qū)表(內(nèi)部表)

      1. 登錄數(shù)據(jù)庫

        1. 在HoloWeb開發(fā)頁面,單擊元數(shù)據(jù)管理

        2. 元數(shù)據(jù)管理頁面,雙擊左側(cè)目錄樹中已創(chuàng)建成功的數(shù)據(jù)庫名稱,單擊確認(rèn)登錄數(shù)據(jù)庫

      2. 創(chuàng)建分區(qū)表

        1. SQL編輯器頁面,單擊左上角的image新建SQL查詢。

        2. 在新增的臨時Query查詢頁面,選擇已創(chuàng)建的實例名數(shù)據(jù)庫后,請您在SQL查詢的編輯框輸入如下語句,單擊運(yùn)行

          DROP TABLE IF EXISTS holo_sale_detail;
          
          -- 創(chuàng)建Hologres分區(qū)表(內(nèi)部表)
          BEGIN ;
          CREATE TABLE IF NOT EXISTS holo_sale_detail
          (
              shop_name TEXT
              ,customer_id TEXT 
              ,total_price FLOAT8
              ,sale_date TEXT
          )
          PARTITION BY LIST(sale_date);
          COMMIT;
  3. 分區(qū)數(shù)據(jù)導(dǎo)入Hologres臨時表

    臨時Query查詢頁面,請您在SQL查詢的編輯框輸入如下語句,單擊運(yùn)行

    此SQL語句將MaxCompute的hologres_test項目中的odps_sale_detail分區(qū)表的20210816分區(qū)導(dǎo)入Hologres中的holo_sale_detail分區(qū)表的20210816分區(qū)。

    說明

    Hologres從V2.1.17版本起支持Serverless Computing能力,針對大數(shù)據(jù)量離線導(dǎo)入、大型ETL作業(yè)、外表大數(shù)據(jù)量查詢等場景,使用Serverless Computing執(zhí)行該類任務(wù)可以直接使用額外的Serverless資源,避免使用實例自身資源,無需為實例預(yù)留額外的計算資源,顯著提升實例穩(wěn)定性、減少OOM概率,且僅需為任務(wù)單獨付費。Serverless Computing詳情請參見Serverless Computing概述,Serverless Computing使用方法請參見Serverless Computing使用指南

    -- 清理潛在的臨時表
    BEGIN ;
    
    DROP TABLE IF EXISTS holo_sale_detail_tmp_20210816;
    
    COMMIT ;
    
    -- 創(chuàng)建臨時表
    SET hg_experimental_enable_create_table_like_properties=on;
    
    BEGIN ;
    
    CALL HG_CREATE_TABLE_LIKE ('holo_sale_detail_tmp_20210816', 'select * from holo_sale_detail'); 
    
    COMMIT;
    
    -- (可選)推薦使用Serverless Computing執(zhí)行大數(shù)據(jù)量離線導(dǎo)入和ETL作業(yè)
    SET hg_computing_resource = 'serverless';
    
    -- 向臨時表插入數(shù)據(jù)
    INSERT INTO holo_sale_detail_tmp_20210816
    SELECT *
    FROM public.odps_sale_detail
    WHERE sale_date='20210816';
    
    -- 重置配置,保證非必要的SQL不會使用serverless資源。
    RESET hg_computing_resource;
  4. 臨時表綁定至Hologres分區(qū)表

    臨時Query查詢頁面,請您在SQL查詢的編輯框輸入如下語句,單擊運(yùn)行

    • 存在舊的子表,則需要先刪除舊子表,再將臨時表綁定至Hologres分區(qū)表。

      此SQL語句用于刪除子表holo_sale_detail_20210816并將臨時表holo_sale_detail_tmp_20210816綁定至holo_sale_detail分區(qū)表的20210816分區(qū)。

      -- 已有子表時替換子表
      BEGIN ;
      
      -- 刪除舊子表
      DROP TABLE IF EXISTS holo_sale_detail_20210816;
      
      -- 將臨時表改名
      ALTER TABLE holo_sale_detail_tmp_20210816 RENAME TO holo_sale_detail_20210816;
      
      -- 將臨時表綁定至指定分區(qū)表
      ALTER TABLE holo_sale_detail ATTACH PARTITION holo_sale_detail_20210816
      FOR VALUES IN ('20210816')
      ;
      
      COMMIT ;
    • 不存在舊子表,直接將臨時表綁定至Hologres分區(qū)表。

      此SQL語句用于將臨時表holo_sale_detail_tmp_20210816綁定至holo_sale_detail分區(qū)表的20210816分區(qū)。

      BEGIN ;
      -- 將臨時表改名
      ALTER TABLE holo_sale_detail_tmp_20210816 RENAME TO holo_sale_detail_20210816;
      -- 將臨時表綁定至指定分區(qū)表
      ALTER TABLE holo_sale_detail ATTACH PARTITION holo_sale_detail_20210816
      FOR VALUES IN ('20210816');
      COMMIT ;
  5. ANALYZE Hologres分區(qū)表

    臨時Query查詢頁面,請您在SQL查詢的編輯框輸入如下語句,單擊運(yùn)行

    此SQL語句用于ANALYZE holo_sale_detail分區(qū)表,驗證分區(qū)表執(zhí)行計劃。ANALYZE分區(qū)表時,僅需ANALYZE父表。

    -- 大量數(shù)據(jù)導(dǎo)入后執(zhí)行ANALYZE分區(qū)表父表操作
    ANALYZE holo_sale_detail;
  6. 清理過期的分區(qū)子表(按需)

    生產(chǎn)環(huán)境中,數(shù)據(jù)具備生命周期,對于超期的分區(qū)需要清理。

    臨時Query查詢頁面,請您在SQL查詢的編輯框輸入如下語句,單擊運(yùn)行

    此SQL語句清理20210631的分區(qū)。

    DROP TABLE IF EXISTS holo_sale_detail_20210631;

DataWorks作業(yè)案例

日常工作中往往需要周期性調(diào)度以上SQL,此時可以借助DataWorks的強(qiáng)大調(diào)度和作業(yè)編排能力,實現(xiàn)周期性調(diào)度,且使用一個調(diào)度作業(yè)覆蓋以上兩個場景。請仔細(xì)閱讀以下內(nèi)容,便于您使用遷移工具導(dǎo)入DataWorks作業(yè)時按照您的具體業(yè)務(wù)需求更改部分參數(shù)或腳本。業(yè)務(wù)流程總覽如下。流程總覽

業(yè)務(wù)流程模塊詳解

  • 基礎(chǔ)參數(shù)

    基礎(chǔ)參數(shù)用于管理整個業(yè)務(wù)流程中用到的所有參數(shù),主要用到的參數(shù)如下。

    編號

    參數(shù)名

    類型

    取值

    描述

    1

    datepre31

    變量

    ${yyyymmdd-31}

    用于控制清理過期分區(qū)的參數(shù),此處含義為清理31天前的分區(qū)。

    2

    datetime1

    變量

    $bizdate

    用于控制創(chuàng)建分區(qū)的參數(shù)。

    3

    holo_table_name

    常量

    holo_sale_detail

    Hologres分區(qū)表名。

    4

    odps_project

    常量

    hologres_test

    MaxCompute項目名。

    5

    odps_table_name

    常量

    odps_sale_detail

    MaxCompute分區(qū)表名。

    6

    partition_key

    常量

    sale_date

    MaxCompute分區(qū)字段。

    系統(tǒng)配置圖如下。基礎(chǔ)參數(shù)

  • 寫入分區(qū)數(shù)據(jù)至臨時表

    該步驟是一個Hologres SQL模塊,其中SQL代碼如下。

    說明

    Hologres從V2.1.17版本起支持Serverless Computing能力,針對大數(shù)據(jù)量離線導(dǎo)入、大型ETL作業(yè)、外表大數(shù)據(jù)量查詢等場景,使用Serverless Computing執(zhí)行該類任務(wù)可以直接使用額外的Serverless資源,避免使用實例自身資源,無需為實例預(yù)留額外的計算資源,顯著提升實例穩(wěn)定性、減少OOM概率,且僅需為任務(wù)單獨付費。Serverless Computing詳情請參見Serverless Computing概述,Serverless Computing使用方法請參見Serverless Computing使用指南

    -- 清理潛在的臨時表
    BEGIN ;
    
    DROP TABLE IF EXISTS ${holo_table_name}_tmp_${datetime1};
    
    COMMIT ;
    
    -- 創(chuàng)建臨時表
    SET hg_experimental_enable_create_table_like_properties=on;
    
    BEGIN ;
    
    CALL HG_CREATE_TABLE_LIKE ('${holo_table_name}_tmp_${datetime1}', 'select * from ${holo_table_name}'); 
    
    COMMIT;
    
    -- 向臨時表插入數(shù)據(jù)
    
    -- (可選)推薦使用Serverless Computing執(zhí)行大數(shù)據(jù)量離線導(dǎo)入和ETL作業(yè)
    SET hg_computing_resource = 'serverless';
    
    INSERT INTO ${holo_table_name}_tmp_${datetime1}
    SELECT *
    FROM public.${odps_table_name}
    WHERE ${partition_key}='${datetime1}';
    
    -- 重置配置,保證非必要的SQL不會使用Serverless資源
    RESET hg_computing_resource;

    需要將基礎(chǔ)參數(shù)綁定至該模塊上游,用于控制其中的參數(shù)變量,系統(tǒng)配置如下:寫入分區(qū)數(shù)據(jù)至臨時表

  • 替換子表

    該步驟是一個Hologres SQL模塊,用于替換已有子表。將替換子表相關(guān)過程放在一個事務(wù)中,保證執(zhí)行的事務(wù)性,SQL代碼如下。

    -- 已有子表時替換子表
    BEGIN ;
    
    -- 刪除已經(jīng)存在的子表
    DROP TABLE IF EXISTS ${holo_table_name}_${datetime1};
    
    -- 將臨時表改名
    ALTER TABLE ${holo_table_name}_tmp_${datetime1} RENAME TO ${holo_table_name}_${datetime1};
    
    -- 將臨時表綁定至指定分區(qū)表
    ALTER TABLE ${holo_table_name} ATTACH PARTITION ${holo_table_name}_${datetime1}
    FOR VALUES IN ('${datetime1}');
    
    COMMIT ;

    需要將基礎(chǔ)參數(shù)綁定至該模塊上游,用于控制其中的參數(shù)變量,系統(tǒng)配置如下。替換子表

  • 收集分區(qū)表的統(tǒng)計信息

    該步驟是一個Hologres SQL模塊,收集父表的統(tǒng)計信息,SQL代碼如下。

    -- 大量數(shù)據(jù)導(dǎo)入后執(zhí)行ANALYZE分區(qū)表父表操作
    ANALYZE ${holo_table_name};

    需要將基礎(chǔ)參數(shù)綁定至該模塊上游,用于控制其中的參數(shù)變量,系統(tǒng)配置如下。收集分區(qū)表的統(tǒng)計信息

  • 清理過期子表

    生產(chǎn)環(huán)境中,數(shù)據(jù)具備生命周期,對于超期的分區(qū)需要清理。

    現(xiàn)以僅在Hologres中存儲最近31天的分區(qū)為例,由于之前設(shè)置的參數(shù)為datepre31=${yyyymmdd-31},所以清理過期子表的SQL代碼如下。

    -- 清理過期子表
    
    BEGIN ;
    
    DROP TABLE IF EXISTS ${holo_table_name}_${datepre31};
    
    COMMIT ;

    所以在作業(yè)運(yùn)行時,如果bizdate=20200309,則datepre31=20200207,這樣即可達(dá)到清理分區(qū)的目的。

    同時需要將基礎(chǔ)參數(shù)綁定至該模塊上游,用于控制其中的參數(shù)變量,系統(tǒng)配置如下。清理過期子表

使用遷移工具導(dǎo)入DataWorks作業(yè)

  • 考慮到作業(yè)較為復(fù)雜,所以可以利用DataWorks的遷移助手功能,將以下文件導(dǎo)入您的項目中,您即可獲得以上說明的DataWorks的作業(yè),之后按照您的具體業(yè)務(wù)需求更改部分參數(shù)或腳本即可。

  • DataWorks遷移助手的詳細(xì)介紹,請參見DataWorks遷移助手介紹及實踐

  • 下載如下作業(yè)包:DataWorks作業(yè)包

  1. 進(jìn)入DataWorks遷移助手,詳情請參見進(jìn)入遷移助手

  2. 在遷移助手的左側(cè)導(dǎo)航欄,單擊DataWorks遷移 > DataWorks導(dǎo)入

  3. DataWorks導(dǎo)入頁面,單擊右上方的新建導(dǎo)入任務(wù)

  4. 新建導(dǎo)入任務(wù)對話框中,配置各項參數(shù)。

    新建導(dǎo)入任務(wù)

    參數(shù)

    描述

    導(dǎo)入名稱

    自定義名稱。導(dǎo)入名稱僅支持大小寫字母、中文、數(shù)字、下劃線(_)和英文句號(.)。

    上傳方式

    上傳文件的方式。

    • 本地上傳:上傳導(dǎo)出包文件小于或等于30 MB時,您可使用本方式上傳導(dǎo)出包文件到DataWorks工作空間中。

    • OSS鏈接:上傳導(dǎo)出包文件大于30 MB時,請將導(dǎo)出包文件上傳至OSS存儲。在OSS存儲控制臺文件詳情頁面復(fù)制URL鏈接,將獲取到的OSS鏈接上傳至DataWorks工作空間中。OSS上傳操作請參見控制臺上傳文件,獲取OSS下載鏈接請參見分享文件下載鏈接

    備注

    對導(dǎo)入任務(wù)進(jìn)行簡單描述。

  5. 單擊確認(rèn),進(jìn)入導(dǎo)入任務(wù)設(shè)置頁面,設(shè)置匹配關(guān)系。

  6. 單擊左下方的開始導(dǎo)入,在請確認(rèn)對話框中,單擊確認(rèn)

    1. 導(dǎo)入成功后,在您的數(shù)據(jù)開發(fā)模塊中則會出現(xiàn)以上提及的周期性作業(yè)。導(dǎo)入成功

    2. 同時在手工作業(yè)流程中會出現(xiàn)相關(guān)的DDL語句。手工作業(yè)流程