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

通過DataWorks周期性導入MaxCompute數據最佳實踐

DataWorks調度任務,可以按照需求設置數據傳輸的時間和頻率,并確保數據在傳輸和導入過程中的完整性和準確性。將MaxCompute分區表數據通過DataWorks導入Hologres分區表,實現兩個平臺的優勢相互結合,從而提高數據處理效率和可靠性。

前提條件

注意事項

請確保MaxCompute租戶級別或項目級別未開通Schema服務。關于Schema詳細介紹,請參見Schema操作

操作步驟

  1. MaxCompute數據準備。

    1. 登錄MaxCompute控制臺

    2. 單擊左側導航欄DataWorks > 數據分析

    3. 數據分析頁面,單擊左側導航欄SQL

    4. SQL查詢頁面,輸入SQL語句創建分區表,單擊運行

      本文以MaxCompute公共數據集public_data中的分區表dwd_ product_movie_basic_info為例。dwd_ product_movie_basic_info表結構示例如下。

      --MaxCompute分區表DDL
      CREATE TABLE IF NOT EXISTS public_data.dwd_product_movie_basic_info(
        movie_name STRING COMMENT '電影名稱',
        director STRING COMMENT '導演',
        scriptwriter STRING COMMENT '編劇',
        area STRING COMMENT '制片地區/國家',
        actors STRING COMMENT '主演',
        `type` STRING COMMENT '類型',
        movie_length STRING COMMENT '電影長度',
        movie_date STRING COMMENT '上映日期',
        movie_language STRING COMMENT '語言',
        imdb_url STRING COMMENT 'imdb號'
      ) 
      PARTITIONED BY (ds STRING) STORED AS ALIORC;
    5. SQL查詢頁面,輸入如下SQL語句用于查看分區表中的數據,單擊運行

      數據準備查看分區表20170112分區的數據。

      SELECT * FROM public_data.dwd_product_movie_basic_info WHERE ds = '20170112';
  2. Hologres中新建外部表。

    新建一張Hologres外部表,用于映射MaxCompute源頭表數據。外表的字段順序和字段類型需要和MaxCompute表的一一對應。

    1. 登錄Hologres管理控制臺,進入HoloWeb開發頁面新建SQL查詢,詳情請參見新建SQL查詢

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

      如下語句使用import foreign schema命令,創建名稱為dwd_product_movie_basic_info的Hologres外部表。

      import foreign schema public_data limit to (dwd_product_movie_basic_info) from server odps_server into public options(if_table_exist 'update');
  3. Hologres中新建真實存儲表(內部表)。

    在Hologres中新建一張內部表,用于接收并存儲數據。

    1. HoloWeb開發頁面,單擊新增SQL窗口

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

      本次示例是將MaxCompute分區表導入Hologres,因此需要在Hologres中創建的內部表為分區表。

      說明

      如下建表語句僅是簡單示例,實際建表DDL請根據實時業務需要創建,并給表設置合理的索引,以達到更優的查詢性能。

      BEGIN;
      CREATE TABLE "public"."holo_dwd_product_movie_basic_info" (
       "movie_name" text,
       "director" text,
       "scriptwriter" text,
       "area" text,
       "actors" text,
       "type" text,
       "movie_length" text,
       "movie_date" text,
       "movie_language" text,
       "imdb_url" text,
       "ds" text
      )
      PARTITION BY LIST (ds);
      CALL SET_TABLE_PROPERTY('"public"."holo_dwd_product_movie_basic_info"', 'orientation', 'column');
      comment on column "public"."holo_dwd_product_movie_basic_info"."movie_name" is '電影名稱';
      comment on column "public"."holo_dwd_product_movie_basic_info"."director" is '導演';
      comment on column "public"."holo_dwd_product_movie_basic_info"."scriptwriter" is '編劇';
      comment on column "public"."holo_dwd_product_movie_basic_info"."area" is '制片地區/國家';
      comment on column "public"."holo_dwd_product_movie_basic_info"."actors" is '主演';
      comment on column "public"."holo_dwd_product_movie_basic_info"."type" is '類型';
      comment on column "public"."holo_dwd_product_movie_basic_info"."movie_length" is '電影長度';
      comment on column "public"."holo_dwd_product_movie_basic_info"."movie_date" is '上映日期';
      comment on column "public"."holo_dwd_product_movie_basic_info"."movie_language" is '語言';
      comment on column "public"."holo_dwd_product_movie_basic_info"."imdb_url" is 'imdb號';
      COMMIT;
  4. 新建分區子表數據開發。

    此步驟是一個Hologres SQL模塊,用于分區表跑調度。

    1. 登錄DataWorks控制臺,進入數據開發頁面,創建Hologres SQL節點,詳情請參見Hologres SQL節點

    2. 在節點的編輯頁面,輸入如下語句。

      在Hologres中不支持直接將分區數據直接寫入分區父表,因此需要在Hologres中創建對應MaxCompute分區表中分區鍵值的分區子表,然后將分區數據導入對應的分區子表。分區鍵值由參數${bizdate}控制,在調度系統中自動賦值完成周期性調度,調度參數的更多內容,請參見調度參數支持的格式

      說明

      導入的分區數據必須和分區鍵值(本文示例使用的是ds)保持一致,否則會出現報錯。

      導入分區數據的邏輯場景比較多,下面有兩個場景供參考,請您根據實際業務邏輯兩者選其中一個。

      • 場景一:導入新的分區數據。

        --創建臨時分區子表
        BEGIN;
        CREATE TABLE IF NOT EXISTS "public".tmp_holo_dwd_product_movie_basic_info_${bizdate}  (
         "movie_name" text,
         "director" text,
         "scriptwriter" text,
         "area" text,
         "actors" text,
         "type" text,
         "movie_length" text,
         "movie_date" text,
         "movie_language" text,
         "imdb_url" text,
         "ds" text
        );
        COMMIT;
        
        --更新外表數據
        import foreign schema public_data limit to (dwd_product_movie_basic_info) from server odps_server into public options(if_table_exist 'update');
        
        --等待30s再導入Hologres,以防Hologres meta信息更新緩存慢導致的數據不一致而同步不成功
        select pg_sleep(30); 
        
        --將MaxCompute數據導入臨時分區子表
        INSERT INTO "public".tmp_holo_dwd_product_movie_basic_info_${bizdate} 
        SELECT 
            "movie_name",
            "director",
            "scriptwriter",
            "area",
            "actors",
            "type",
            "movie_length",
            "movie_date",
            "movie_language",
            "imdb_url",
            "ds"
        FROM "public".dwd_product_movie_basic_info
        WHERE ds='${bizdate}';
        
        --導入新的分區數據
        BEGIN;
        
        ALTER TABLE tmp_holo_dwd_product_movie_basic_info_${bizdate} RENAME TO holo_dwd_product_movie_basic_info_${bizdate};
        
        --將臨時分區子表綁定在分區父表上
        ALTER TABLE holo_dwd_product_movie_basic_info ATTACH PARTITION holo_dwd_product_movie_basic_info_${bizdate} FOR VALUES in ('${bizdate}');
        
        COMMIT;
                                            
      • 場景二:重新對歷史分區數據刷新。

        --創建臨時分區子表
        BEGIN;
        CREATE TABLE IF NOT EXISTS "public".tmp_holo_dwd_product_movie_basic_info_${bizdate}  (
         "movie_name" text,
         "director" text,
         "scriptwriter" text,
         "area" text,
         "actors" text,
         "type" text,
         "movie_length" text,
         "movie_date" text,
         "movie_language" text,
         "imdb_url" text,
         "ds" text
        );
        COMMIT;
        
        --更新外表數據
        import foreign schema public_data limit to (dwd_product_movie_basic_info) from server odps_server into public options(if_table_exist 'update');
        
        --等待30s再導入Hologres,以防Hologres meta信息更新緩存慢導致的數據不一致而同步不成功
        select pg_sleep(30); 
        
        --將MaxCompute數據導入臨時分區子表
        INSERT INTO "public".tmp_holo_dwd_product_movie_basic_info_${bizdate} 
        SELECT 
            "movie_name",
            "director",
            "scriptwriter",
            "area",
            "actors",
            "type",
            "movie_length",
            "movie_date",
            "movie_language",
            "imdb_url",
            "ds"
        FROM "public".dwd_product_movie_basic_info
        WHERE ds='${bizdate}';
        
        重新對歷史分區數據刷新
        BEGIN;
        
        ALTER TABLE IF EXISTS holo_dwd_product_movie_basic_info DETACH PARTITION holo_dwd_product_movie_basic_info_${bizdate};
        
        DROP TABLE IF EXISTS holo_dwd_product_movie_basic_info_${bizdate};
        
        ALTER TABLE tmp_holo_dwd_product_movie_basic_info_${bizdate} RENAME TO holo_dwd_product_movie_basic_info_${bizdate};
        
        --將分區子表綁定在分區父表上
        ALTER TABLE holo_dwd_product_movie_basic_info ATTACH PARTITION holo_dwd_product_movie_basic_info_${bizdate} FOR VALUES in ('${bizdate}');
        
        COMMIT;
  5. 調度配置。

    Hologres SQL編輯頁面,單擊節點編輯區域右側的調度配置,配置節點的調度屬性。

    說明

    需要更改的參數如下,未提及參數請保持默認值。

    • 基礎屬性

      參數

      參數

      bizdate=${yyyymmdd}

    • 時間屬性時間屬性

      參數

      生成實例方式

      發布后即時生成

      重跑屬性

      運行成功后不可重跑,運行失敗后可以重跑

      定時調度時間

      00:05

    • 調度依賴

      調度依賴為root節點即可(也可以根據業務邏輯選擇已有的父節點)。請先將代碼解析選擇為,然后單擊代碼解析,會自動解析出root節點,最后再將代碼解析選擇為

  6. 發布調度。

    1. Hologres SQL編輯頁面,單擊工具欄中的保存圖標,保存節點。

    2. 單擊工具欄中的提交圖標,提交節點。

    3. 提交新版本對話框中,輸入變更描述

    4. 單擊確認

  7. 運維中心發布。

    1. Hologres SQL編輯頁面,單擊工具欄中最右側的運維

    2. 進入運維中心頁面,單擊左側菜單欄周期任務運維>周期任務

    3. 周期任務頁面,右鍵單擊節點,選擇補數據>當前節點

      補數據

    4. 選擇左側菜單欄周期任務運維 > 補數據實例,查看正在運行的任務以及任務狀態。

  8. 查看數據。

    任務執行成功之后,將會在Hologres中自動創建對應分區數據的分區子表。

    1. 進入DataStudio數據開發頁面,創建Hologres SQL節點。

    2. 在節點的編輯頁面,輸入如下語句,進行數據查詢。

      • 查看分區子表數據。

        select * from holo_dwd_product_movie_basic_info_20170112;
      • 查看分區父表總數據。

        select count (*) from holo_dwd_product_movie_basic_info;