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

文檔

加工數據

更新時間:

本文為您介紹如何使用DataWorks中的EMR Hive節點,對同步至OSS的用戶信息表(ods_user_info_d_emr)及訪問日志數據表(ods_raw_log_d_emr)中的數據進行加工,進而得到目標用戶畫像數據。

前提條件

開始本實驗前,請首先完成同步數據中的操作。

步驟一:設計業務流程

業務流程節點間依賴關系的配置請參見同步數據

雙擊新建的業務流程打開編輯頁面,鼠標單擊EMR Hive并拖拽至右側的編輯頁面。在新建節點對話框中,輸入節點名稱,單擊提交

此處需要新建3個EMR Hive節點,依次命名為dwd_log_info_di_emrdws_user_info_all_di_emrads_user_info_1d_emr,并配置如下圖所示的依賴關系。節點dwd_log_info_di_emr用于對原始OSS日志數據進行清洗,節點dws_user_info_all_di_emr用于將清洗后的日志數據和用戶基本信息數據進行匯總,節點ads_user_info_1d_emr用于生成最終用戶畫像數據。

image

步驟二:創建函數

根據同步的原始日志數據格式,我們需要通過函數等方式將其拆解為目標格式。本案例已為您提供用于將IP解析為地域的函數代碼包。您可以將代碼包下載至本地,并在DataWorks注冊為函數后,即可調用該函數。

上傳資源

  1. 下載ip2region-emr.jar

  2. 數據開發頁面打開WorkShop業務流程,右鍵單擊EMR,選擇新建資源 > EMR JAR,配置新建資源參數。image

    關鍵參數配置如下:

    • 存儲路徑:選擇準備環境中創建的Bucket

    • 上傳文件:選擇已下載ip2region-emr.jar文件。

    其他參數保持默認或根據實際情況配置。

  3. 單擊工具欄image.png,將資源提交至開發環境對應的EMR引擎項目。

注冊函數

  1. 數據開發頁面打開業務流程,右鍵單擊EMR,選擇新建函數

  2. 新建函數對話框中,函數名稱輸入getregion,單擊新建,配置函數信息。image

    關鍵參數配置如下:

    • 所屬資源:選擇ip2region-emr.jar。

    • 類名:輸入org.alidata.emr.udf.Ip2Region。

    其他參數保持默認或根據實際情況配置。

  3. 單擊工具欄image.png,將函數提交至開發環境對應的EMR引擎項目。

步驟三:配置EMR Hive節點

新建dwd_log_info_di_emr節點

1. 編輯代碼

雙擊dwd_log_info_di_emr節點,進入節點配置頁面。在節點編輯頁面,編寫如下語句。

說明

如果您工作空間的數據開發中綁定多個EMR引擎,請按需選擇EMR引擎。如果僅綁定一個EMR引擎,則無需選擇。

--創建ODS層表
CREATE TABLE IF NOT EXISTS dwd_log_info_di_emr (
  ip STRING COMMENT 'ip地址',
  uid STRING COMMENT '用戶ID',
  `time` STRING COMMENT '時間yyyymmddhh:mi:ss',
  status STRING COMMENT '服務器返回狀態碼',
  bytes STRING COMMENT '返回給客戶端的字節數',
  region STRING COMMENT '地域,根據ip得到',
  method STRING COMMENT 'http請求類型',
  url STRING COMMENT 'url',
  protocol STRING COMMENT 'http協議版本號',
  referer STRING COMMENT '來源url',
  device STRING COMMENT '終端類型 ',
  identity STRING COMMENT '訪問類型 crawler feed user unknown'
)
PARTITIONED BY (
  dt STRING
);

ALTER TABLE dwd_log_info_di_emr ADD IF NOT EXISTS PARTITION (dt='${bizdate}');

set hive.vectorized.execution.enabled = false;
INSERT OVERWRITE TABLE dwd_log_info_di_emr PARTITION (dt='${bizdate}')
SELECT ip
  , uid
  , tm
  , status
  , bytes 
  , getregion(ip) AS region --使用自定義UDF通過ip得到地域。 
  , regexp_extract(request, '(^[^ ]+) .*') AS method --通過正則把request差分為三個字段。
  , regexp_extract(request, '^[^ ]+ (.*) [^ ]+$') AS url
  , regexp_extract(request, '.* ([^ ]+$)') AS protocol 
  , regexp_extract(referer, '^[^/]+://([^/]+){1}') AS referer  --通過正則清洗refer,得到更精準的url。
  , CASE
    WHEN lower(agent) RLIKE 'android' THEN 'android' --通過agent得到終端信息和訪問形式。
    WHEN lower(agent) RLIKE 'iphone' THEN 'iphone'
    WHEN lower(agent) RLIKE 'ipad' THEN 'ipad'
    WHEN lower(agent) RLIKE 'macintosh' THEN 'macintosh'
    WHEN lower(agent) RLIKE 'windows phone' THEN 'windows_phone'
    WHEN lower(agent) RLIKE 'windows' THEN 'windows_pc'
    ELSE 'unknown'
  END AS device
  , CASE
    WHEN lower(agent) RLIKE '(bot|spider|crawler|slurp)' THEN 'crawler'
    WHEN lower(agent) RLIKE 'feed'
    OR regexp_extract(request, '^[^ ]+ (.*) [^ ]+$') RLIKE 'feed' THEN 'feed'
    WHEN lower(agent) NOT RLIKE '(bot|spider|crawler|feed|slurp)'
    AND agent RLIKE '^[Mozilla|Opera]'
    AND regexp_extract(request, '^[^ ]+ (.*) [^ ]+$') NOT RLIKE 'feed' THEN 'user'
    ELSE 'unknown'
  END AS identity
  FROM (
    SELECT SPLIT(col, '##@@')[0] AS ip
    , SPLIT(col, '##@@')[1] AS uid
    , SPLIT(col, '##@@')[2] AS tm
    , SPLIT(col, '##@@')[3] AS request
    , SPLIT(col, '##@@')[4] AS status
    , SPLIT(col, '##@@')[5] AS bytes
    , SPLIT(col, '##@@')[6] AS referer
    , SPLIT(col, '##@@')[7] AS agent
    FROM ods_raw_log_d_emr
  WHERE dt = '${bizdate}'
) a;

2. 配置調度屬性

通過以下配置實現調度場景下,每日00:30待上游ods_raw_log_d_emr節點將存儲于OSS的user_log.txt數據同步至EMR的ods_raw_log_d_emr表后,可觸發當前dwd_log_info_di_emr節點對ods_raw_log_d_emr表數據進行加工,加工結果寫入dwd_log_info_di_emr表對應業務時間分區。

配置項

配置內容

圖示

新增參數

調度參數項中單擊新增參數,添加:

  • 參數名:bizdate

  • 參數值:$[yyyymmdd-1]

image

調度依賴

調度依賴確認產出表已作為本節點輸出。

格式為worksspacename.節點名

image

說明

時間屬性的配置,配置調度周期為日,無需單獨配置當前節點定時調度時間,當前節點每日調起時間由業務流程虛擬節點workshop_start_emr的定時調度時間控制,即每日00:30后才會調度。

3. 保存配置

本案例其他必填配置項,您可按需自行配置,配置完成后,在節點代碼編輯頁面,單擊工具欄中的image.png按鈕,保存當前配置。

新建dws_user_info_all_di_emr節點

1. 編輯代碼

雙擊dws_user_info_all_di_emr節點,進入節點配置頁面。在節點編輯頁面,編寫如下語句。

說明

如果您工作空間的數據開發中綁定多個EMR引擎,請按需選擇EMR引擎。如果僅綁定一個EMR引擎,則無需選擇。

--創建DW層表
CREATE TABLE IF NOT EXISTS dws_user_info_all_di_emr (
  uid STRING COMMENT '用戶ID',
  gender STRING COMMENT '性別',
  age_range STRING COMMENT '年齡段',
  zodiac STRING COMMENT '星座',
  region STRING COMMENT '地域,根據ip得到',
  device STRING COMMENT '終端類型 ',
  identity STRING COMMENT '訪問類型 crawler feed user unknown',
  method STRING COMMENT 'http請求類型',
  url STRING COMMENT 'url',
  referer STRING COMMENT '來源url',
  `time` STRING COMMENT '時間yyyymmddhh:mi:ss'
)
PARTITIONED BY (
  dt STRING
);

ALTER TABLE dws_user_info_all_di_emr ADD IF NOT EXISTS PARTITION (dt='${bizdate}');

INSERT OVERWRITE TABLE dws_user_info_all_di_emr PARTITION (dt='${bizdate}')
SELECT COALESCE(a.uid, b.uid) AS uid
  , b.gender
  , b.age_range
  , b.zodiac
  , a.region
  , a.device
  , a.identity
  , a.method
  , a.url
  , a.referer
  , a.`time`
FROM (
  SELECT *
  FROM dwd_log_info_di_emr
  WHERE dt = '${bizdate}'
) a
LEFT OUTER JOIN (
  SELECT *
  FROM ods_user_info_d_emr
  WHERE dt = '${bizdate}'
) b
ON a.uid = b.uid;

2. 配置調度屬性

通過以下配置實現調度場景下。每日00:30待上游任務ods_user_info_d_emrdwd_log_info_di_emr執行完成后,可觸發dws_user_info_all_di_emr節點對ods_user_info_d_emrdwd_log_info_di_emr兩表進行合并處理,并寫入dws_user_info_all_di_emr表中。

配置項

配置內容

圖示

新增參數

調度參數項中單擊新增參數,添加:

  • 參數名:bizdate

  • 參數值:$[yyyymmdd-1]

image

調度依賴

調度依賴確認產出表已作為本節點輸出。

格式為worksspacename.節點名

image

說明

時間屬性的配置,配置調度周期為日,無需單獨配置當前節點定時調度時間,當前節點每日調起時間由業務流程虛擬節點workshop_start_emr的定時調度時間控制,即每日00:30后才會調度。

3. 保存配置

本案例其他必填配置項,您可按需自行配置,配置完成后,在節點代碼編輯頁面,單擊工具欄中的image.png按鈕,保存當前配置。

新建ads_user_info_1d_emr節點

1. 編輯代碼

雙擊ads_user_info_1d_emr節點,進入節點配置頁面。在節點編輯頁面,編寫如下語句。

說明

如果您工作空間的數據開發中綁定多個EMR引擎,請按需選擇EMR引擎。如果僅綁定一個EMR引擎,則無需選擇。

--創建RPT層表
CREATE TABLE IF NOT EXISTS ads_user_info_1d_emr (
  uid STRING COMMENT '用戶ID',
  region STRING COMMENT '地域,根據ip得到',
  device STRING COMMENT '終端類型 ',
  pv BIGINT COMMENT 'pv',
  gender STRING COMMENT '性別',
  age_range STRING COMMENT '年齡段',
  zodiac STRING COMMENT '星座'
)
PARTITIONED BY (
  dt STRING
);

ALTER TABLE ads_user_info_1d_emr ADD IF NOT EXISTS PARTITION (dt='${bizdate}');

INSERT OVERWRITE TABLE ads_user_info_1d_emr PARTITION (dt='${bizdate}')
SELECT uid
  , MAX(region)
  , MAX(device)
  , COUNT(0) AS pv
  , MAX(gender)
  , MAX(age_range)
  , MAX(zodiac)
FROM dws_user_info_all_di_emr
WHERE dt = '${bizdate}'
GROUP BY uid;

調度配置

在上游dws_user_info_all_di_emr節點任務將ods_user_info_d_emr表和dwd_log_info_di_emr表合并后完成后,可觸發ads_user_info_1d_emr節點任務,進一步加工數據生成可消費數據。

配置項

配置內容

圖示

新增參數

調度參數項中單擊新增參數,添加:

  • 參數名:bizdate

  • 參數值:$[yyyymmdd-1]

image

調度依賴

調度依賴確認產出表已作為本節點輸出。

格式為worksspacename.節點名

image

說明

時間屬性的配置,配置調度周期為日,無需單獨配置當前節點定時調度時間,當前節點每日調起時間由業務流程虛擬節點workshop_start_emr的定時調度時間控制,即每日00:30后才會調度。

3. 保存配置

本案例其他必填配置項,您可按需自行配置,配置完成后,在節點代碼編輯頁面,單擊工具欄中的image.png按鈕,保存當前配置。

步驟四:提交業務流程

完成業務流程所有配置后,測試該流程是否能正常運行,測試成功后,需要提交流程等待發布。

  1. 在業務流程的編輯頁面,單擊運行,運行業務流程。

  2. 待業務流程中的所有節點后出現成功,單擊提交,提交運行成功的業務流程。

  3. 選擇提交對話框中需要提交的節點,勾選忽略輸入輸出不一致的告警

  4. 單擊提交

  5. 提交成功后,即可在發布頁面發布流程節點。

步驟五:在生產環境運行任務

任務發布后,在次日才會生成實例運行,您可以通過補數據來對已發布流程進行補數據操作,以便查看任務在生產環境是否可以運行,詳情可參見執行補數據并查看補數據實例(新版)

  1. 任務發布成功后,單擊右上角的運維中心

    您也可以進入業務流程的編輯頁面,單擊工具欄中的前往運維,進入運維中心頁面。

  2. 單擊左側導航欄中的周期任務運維 > 周期任務,進入周期任務頁面,單擊workshop_start_emr虛節點。

  3. 在右側的DAG圖中,右鍵單擊workshop_start_emr節點,選擇補數據 > 當前節點及下游節點

  4. 勾選需要補數據的任務,輸入業務日期,單擊確定,自動跳轉至補數據實例頁面。

  5. 單擊刷新,直至SQL任務全部運行成功即可。

后續步驟

任務周期性調度場景下,為保障任務產出的表數據符合預期,我們可以對任務產出的表數據進行數據質量監控,詳情請參見配置數據質量監控