本教程以MySQL中的用戶基本信息(ods_user_info_d)表及OSS中的網站訪問日志數據(user_log.txt)文件,通過數據集成離線同步任務分別同步至MaxCompute的ods_user_info_d、ods_raw_log_d表為例,為您介紹如何通過DataWorks數據集成實現異構數據源間的數據同步,完成數倉數據同步操作。
前提條件
已為您準備該實驗所需的用戶信息數據和用戶網站訪問記錄數據,并分別存放于平臺提供的RDS MySQL及OSS上,您可直接在DataWorks注冊使用。無需單獨開通RDS服務與OSS服務,無需單獨準備測試數據,但需自行創建DataWorks工作空間,并為工作空間綁定MaxCompute數據源。
本教程以標準模式工作空間為例進行說明,創建的工作空間名稱為WorkShop2024_01,您也可以自定義該名稱。
本教程中創建的MaxCompute數據源的名稱為odps_first,創建數據源時生產環境使用的MaxCompute項目名稱為workshop2024_01,開發環境使用的MaxCompute項目名稱為workshop2024_01_dev。
(可選)如果您使用RAM賬號操作本實踐教程,您需要確保操作的RAM賬號擁有AliyunBSSOrderAccess、AliyunDataWorksFullAccess權限,授權操作詳情請參見為RAM用戶授權。
快速體驗
本案例中,數據同步和數據加工的部分任務可以通過ETL工作流模板一鍵導入。在導入模板后,您可以前往目標空間,并自行完成后續的數據質量監控和數據可視化操作。
僅空間管理員角色可導入ETL模板至目標工作空間,為賬號授權空間管理員角色詳情請參見空間級模塊權限管控。
導入ETL工作流模板,詳情請參見ETL工作流快速體驗。
ETL工作流模板快捷入口,請點擊網站用戶行為分析。
背景信息
數據集成是穩定高效、彈性伸縮的數據同步平臺,致力于提供復雜網絡環境下豐富的異構數據源之間高速穩定的數據移動及同步能力,提供離線同步、增量同步、全增量數據實時同步等多種同步方案。
本教程采用離線同步方案,DataWorks將數據集成離線同步能力封裝為離線同步節點,一個離線同步節點代表一個同步任務,節點內通過數據來源與數據去向定義數據源之間的數據傳輸,通過字段映射的方式定義源端字段與目標端字段的數據讀取與寫入關系。
平臺已提供本教程所需的測試數據及數據源,您需將該數據源添加至您的工作空間,即可在工作空間訪問平臺提供的測試數據。
本教程提供數據僅作為阿里云大數據開發治理平臺DataWorks數據應用實操使用,所有數據均為人工Mock數據,并且只支持在數據集成模塊讀取數據。
章節目標
將MySQL存儲的用戶基本信息及OSS存儲的網站訪問日志數據,通過數據集成服務同步至MaxCompute,具體數據寫入情況如下:
源端數據源 | 目標數據源(MaxCompute) | |
MySQL | 表:ods_user_info_d
| 表:ods_user_info_d
|
OSS | 文件:user_log.txt
| 表:ods_raw_log_d
|
步驟一:購買并配置Serverless資源組
本教程需將存儲在OSS、MySQL中的數據同步至MaxCompute,同步任務需使用DataWorks的Serverless資源組,因此您需要先購買Serverless資源組,并完成前期的準備工作。
購買Serverless資源組。
登錄DataWorks控制臺,切換至目標地域后,單擊左側導航欄的資源組,進入資源組列表頁面。
單擊新建資源組,在資源組購買頁面,選擇地域和可用區為華東2(上海)、設置資源組名稱,其他參數可根據界面提示進行配置,完成后根據界面提示完成付款。Serverless資源組的計費說明請參見Serverless資源組計費。
說明本教程將使用華東2(上海)地域的Serverless資源組進行示例演示,需注意Serverless資源組不支持跨地域操作。
配置Serverless資源組。
登錄DataWorks控制臺,切換至目標地域后,單擊左側導航欄的資源組,進入資源組列表頁面。
找到購買的Serverless資源組,單擊操作列的綁定工作空間,根據界面提示將資源組綁定至已創建的DataWorks工作空間。
為資源組配置公網訪問能力。
登錄專有網絡-公網NAT網關控制臺,在頂部菜單欄切換至華東2(上海)地域。
單擊創建公網NAT網關。配置相關參數。
參數
取值
所屬地域
華東2(上海)。
所屬專有網絡
選擇資源組綁定的VPC和交換機。
您可以前往DataWorks管理控制臺,切換地域后,在左側導航欄單擊資源組列表,找到已創建的資源組,然后單擊操作列的網絡設置,在數據調度 & 數據集成區域查看綁定的專有網絡和交換機。VPC和交換機的更多信息,請參見什么是專有網絡。
關聯交換機
訪問模式
VPC全通模式(SNAT)。
彈性公網IP
新購彈性公網IP。
關聯角色創建
首次創建NAT網關時,需要創建服務關聯角色,請單擊創建關聯角色。
說明上表中未說明的參數保持默認值即可。
單擊立即購買,勾選服務協議后,單擊確認訂單,完成購買。
更多新增和使用Serverless資源組的操作指導請參見新增和使用Serverless資源組。
步驟二:創建數據源
本教程需要分別在您當前空間創建名為user_behavior_analysis_httpfile的HttpFile數據源、名為user_behavior_analysis_mysql的MySQL數據源用于訪問平臺提供的測試數據,測試使用的數據源基本信息已提供。
在數據集成同步任務配置前,您可以在DataWorks的數據源頁面,配置好您需要同步的源端和目標端數據庫或數據倉庫的相關信息,以便在同步任務配置過程中,可通過選擇數據源名稱來控制同步讀取和寫入的數據庫或數據倉庫。
本教程提供數據僅作為阿里云大數據開發治理平臺DataWorks數據應用實操使用,所有數據均為人工Mock數據,并且只支持在數據集成模塊讀取數據。
創建HttpFile數據源(user_behavior_analysis_httpfile)
在您的工作空間中新建HttpFile數據源,用于后續讀取平臺提供的存放于OSS中的用戶網站訪問測試數據,并測試該數據源與同步數據的資源組網絡是否連通。
進入數據源頁面。
登錄DataWorks控制臺,切換至目標地域后,單擊左側導航欄的 ,在下拉框中選擇對應工作空間后單擊進入管理中心。
進入工作空間管理中心頁面后,單擊左側導航欄的
,進入數據源頁面。
新建HttpFile數據源。
在管理中心頁面,單擊進入
頁面后單擊新增數據源。在新增數據源對話框中,搜索選擇數據源類型為HttpFile。
在創建HttpFile數據源對話框,配置各項參數,主要參數配置描述如下:
主要參數
描述
數據源名稱
輸入數據源名稱,該名稱為數據源在您工作空間中的標識,本案例中設置數據源名稱為user_behavior_analysis_httpfile。
數據源描述
輸入DataWorks案例體驗專用數據源,在離線同步配置時讀取該數據源即可訪問平臺提供的測試數據,該數據源只支持數據集成場景去讀取,其他模塊不支持使用。
適用環境
勾選開發環境、生產環境。
說明您需要同步創建開發環境及生產環境的數據源,否則任務生產執行會報錯。
URL域名
輸入
https://dataworks-workshop-2024.oss-cn-shanghai.aliyuncs.com
。資源組連通性
在連接配置區域的Serverless資源組后,單擊連通狀態列的測試連通性,分別測試資源組與開發、生產環境數據源的網絡是否連通,等待界面提示測試完成,連通狀態為可連通。
創建MySQL數據源(user_behavior_analysis_mysql)
在您的工作空間中新建MySQL數據源,用于后續讀取平臺提供的存放于MySQL中的用戶信息數據,并測試該數據源與同步數據的資源組網絡是否連通。
進入數據源頁面。
登錄DataWorks控制臺,切換至目標地域后,單擊左側導航欄的 ,在下拉框中選擇對應工作空間后單擊進入管理中心。
進入工作空間管理中心頁面后,單擊左側導航欄的
,進入數據源頁面。
新建MySQL數據源。
在管理中心頁面,單擊進入
頁面后單擊新增數據源。在新增數據源對話框中,搜索選擇數據源類型為MySQL。
在創建MySQL數據源對話框,配置各項參數。
參數
描述
數據源類型
選擇連接串模式。
數據源名稱
請輸入user_behavior_analysis_mysql。
數據源描述
輸入DataWorks案例體驗專用數據源,在離線同步配置時讀取該數據源即可訪問平臺提供的測試數據,該數據源只支持數據集成場景讀取,其他模塊不支持使用。
適用環境
勾選開發、生產。
說明您需要同步創建開發環境及生產環境的數據源,否則任務生產執行會報錯。
JDBC URL
主機地址IP
rm-bp1z69dodhh85z9qa.mysql.rds.aliyuncs.com
端口號
3306
數據庫名稱
workshop
用戶名
workshop
密碼
workshop#2017
認證選項
無認證。
資源組連通性
在連接配置區域的Serverless資源組后,單擊連通狀態列的測試連通性,分別測試資源組與開發、生產環境數據源的網絡是否連通,等待界面提示測試完成,連通狀態為可連通。
步驟三:新建業務流程
根據需求分析設計業務流程。新建兩個離線同步節點ods_raw_log_d、ods_user_info_d,用于后續同步MySQL用戶數據與OSS網站訪問日志數據,再新建虛擬節點workshop_start統一管理該業務流程。本階段僅涉及數據同步業務流程,不涉及具體同步任務配置。
1、新建業務流程
DataWorks默認預設了業務流程workflow,您可跳過該步驟直接使用該默認業務流程。
進入數據開發頁面。
登錄DataWorks控制臺,切換至目標地域后,單擊左側導航欄的 ,在下拉框中選擇對應工作空間后單擊進入數據開發。
新建業務流程。
在數據開發面板,右鍵單擊業務流程,選擇新建業務流程。并根據業務需要定義業務流程名稱,本案例業務流程命名為WorkShop。
2、設計業務流程
進入業務流程面板。
雙擊上一步創建的業務流程名,進入業務流程開發面板。
新建節點。
通過業務流程拖拽組件的方式,實現業務流程設計。單擊新建節點,找到需要創建的節點類型并拖拽至右側的業務流程畫布。
本案例需新建1個虛擬節點:workshop_start,兩個離線同步節點:ods_raw_log_d(用于同步網站訪問日志數據)和ods_user_info_d(用于同步用戶基本信息數據)。
設置節點依賴。
將workshop_start節點設置為兩個離線同步節點的上游節點。本教程中,由于虛擬節點和同步節點無血緣關系,所以此處通過業務流程拉線設置虛擬節點workshop_start與OSS數據同步節點ods_raw_log_d、MySQL數據同步節點ods_user_info_d間的依賴關系,更多依賴關系設置方式,詳情請參見調度依賴配置指引。
步驟四:新建MaxCompute表
提前新建用于接收通過數據集成同步過來的原始數據的MaxCompute表。本教程僅快速創建相關表,更多MaxCompute表相關操作,請參見創建并使用MaxCompute表。
新建表入口。
新建ods_raw_log_d表。
在新建表彈窗中輸入名稱ods_raw_log_d,在表的編輯頁面單擊DDL,輸入下述建表語句后,單擊生成表結構,并確認覆蓋當前操作。
CREATE TABLE IF NOT EXISTS ods_raw_log_d ( col STRING ) PARTITIONED BY ( dt STRING ) LIFECYCLE 7;
新建ods_user_info_d表。
在新建表彈窗中輸入名稱ods_user_info_d,在表的編輯頁面單擊DDL,輸入下述建表語句后,單擊生成表結構,并確認覆蓋當前操作。
CREATE TABLE IF NOT EXISTS ods_user_info_d ( uid STRING COMMENT '用戶ID', gender STRING COMMENT '性別', age_range STRING COMMENT '年齡段', zodiac STRING COMMENT '星座' ) PARTITIONED BY ( dt STRING ) LIFECYCLE 7;
提交并發布表。
表信息確認無誤后,將ods_user_info_d表和ods_raw_log_d表分別單擊提交到開發環境和提交到生產環境,此操作將根據您的節點配置在開發環境與生產環境對應計算引擎項目分別創建目標引擎物理表。
說明表結構定義完成后,您需將其提交至開發環境與生產環境,提交成功后才可在對應環境的引擎項目查看該表。
提交表至DataWorks的開發環境,即在開發環境所綁定的MaxCompute引擎中創建當前表。
提交表至DataWorks的生產環境,即在生產環境所綁定的MaxCompute引擎中創建當前表。
步驟五:配置虛擬節點(workshop_start)
本教程通過workshop_start節點實現每天00:15統一調起用戶畫像分析業務流程執行,workshop_start屬于管控類節點,不需要配置節點代碼,節點調度配置如下。
進入workshop_start編輯頁面。
在數據開發頁面,雙擊相應的業務流程名,進入業務流程開發面板。雙擊虛擬節點workshop_start。進入該節點的編輯頁面,單擊右側的調度配置。
配置workshop_start調度屬性。
通過以下配置實現調度場景下,每日00:15,由工作空間根節點觸發當前節點調度。
配置調度時間:配置調度周期為日;定時調度時間為00:15。
配置重跑屬性:配置為運行成功或失敗后皆可重跑。
配置調度依賴:配置依賴的上游節點為使用工作空間根節點。
本教程中workshop_start作為流程管控節點,無其他強上游依賴,所以本教程直接依賴工作空間自帶的根節點。即由工作空間根節點直接調起當前用戶畫像分析業務流程執行。
說明工作空間根節點為空間創建后默認生成節點,一般情況下,空間下所有任務均會掛在該節點下,工作空間根節點默認從0點開始調起掛在其下游的所有一級子節點,且該節點不支持變更。
步驟六:配置OSS數據同步節點(ods_raw_log_d)
此步驟中,通過配置ods_raw_log_d節點,實現將存儲于OSS中的用戶訪問日志user_log.txt,通過數據集成同步任務寫入MaxCompute的ods_raw_log_d表中。
在數據開發頁面,雙擊相應業務流程下的ods_raw_log_d節點,進入該節點的編輯頁面開始配置同步任務。
1、配置同步網絡鏈接
此步驟中,使用Serverless資源組測試與源端HttpFile數據源user_behavior_analysis_httpfile,以及目標端MaxCompute數據源的網絡連通。
數據來源:數據來源選擇HttpFile,數據源名稱選擇user_behavior_analysis_httpfile,即步驟二:創建數據源中新建的HttpFile數據源。
我的資源組:選擇購買的Serverless資源組。
數據去向:數據去向選擇MaxCompute,然后選擇對應數據源名稱。
2、配置同步任務
同步任務基本配置。
數據來源端指定要讀取的文件user_log.txt。
數據去向端指定OSS文件寫入MaxCompute數據源中的ods_raw_log_d表。并指定表分區信息。分區信息通過${}格式定義了名為bizdate的變量,該變量將在后續步驟3中為其賦值。
確認字段映射及通用配置。
DataWorks通過配置源端與目標端字段映射關系,實現源端指定字段數據寫入目標端指定字段,同時提供并發設置并發讀寫數據、提供限速功能避免同步對數據庫造成影響、提供臟數據影響定義及分布式執行任務等功能。本教程使用默認配置。關于其他配置項說明,詳情請參見通過向導模式配置離線同步任務。
3、配置調度屬性
通過以下配置實現調度場景下,每日00:15將存儲在OSS的user_log.txt文件數據通過數據集成同步至MaxCompute的ods_raw_log_d表對應時間分區。
配置調度參數:bizdate=$bizdate,獲取前一天的日期,格式為yyyymmdd。
配置調度時間:配置調度周期為日;無需單獨配置當前節點定時調度時間,當前節點每日起調時間由業務流程根節點workshop_start的定時調度時間控制,即每日00:15后才會調度。
配置調度依賴:
步驟七:配置MySQL數據同步節點(ods_user_info_d)
此步驟中,通過配置ods_user_info_d節點,實現將存儲于MySQL中的用戶信息ods_user_info_d表數據同步至MaxCompute的ods_user_info_d表中。
在數據開發頁面,雙擊WorkShop業務流程下的ods_user_info_d節點,進入該節點的編輯頁面開始配置同步任務。
1、配置同步網絡鏈接
此步驟中,使用Serverless資源組測試與源端MySQL數據源user_behavior_analysis_mysql,以及目標端MaxCompute數據源的網絡連通。
數據來源:數據來源選擇MySQL,數據源名稱選擇user_behavior_analysis_mysql。
我的資源組:選擇購買的Serverless資源組。
數據去向:數據去向選擇MaxCompute,然后選擇對應數據源名稱。
2、配置同步任務
同步任務基本配置。
數據來源端指定要讀取的MySQL數據源中的ods_user_info_d表。
數據去向端指定寫入MaxCompute數據源中的ods_user_info_d表,并配置表分區信息。分區信息通過${}格式定義了名為bizdate的變量,該變量將在后續步驟3中為其賦值。
說明本案例默認全量讀取MySQL表數據寫入MaxCompute表指定日期分區。
確認字段映射及通用配置。
DataWorks通過配置源端與目標端字段映射關系,實現源端指定字段數據寫入目標端指定字段,同時提供并發設置并發讀寫數據、提供限速功能避免同步對數據庫造成影響、提供臟數據影響定義及分布式執行任務等功能。本教程使用默認配置。關于其他配置項說明,詳情請參見通過向導模式配置離線同步任務。
3、配置調度屬性
通過以下配置實現調度場景下,每日00:15將存儲在MySQL的ods_user_info_d用戶信息數據通過數據集成同步至MaxCompute的ods_user_info_d表對應時間分區。
配置調度參數:bizdate=$bizdate,獲取前一天的日期,格式為yyyymmdd。
配置調度時間:配置調度周期為日;無需單獨配置當前節點定時調度時間,當前節點每日起調時間由業務流程根節點WorkShop的定時調度時間控制,即每日00:15后才會調度。
配置調度依賴:
確認依賴的上游節點:確認當前節點依賴的上游節點是否展示workshop_start節點,拉線設置的上游依賴將展示在此處,若未顯示workshop_start節點,請確認是否已參照2、設計業務流程完成業務數據同步階段的業務流程設計。
本案例中,workshop_start節點定時時間到且執行完成后,將會觸發當前節點執行。
確認本節點輸出:確認是否存在MaxCompute生產項目名稱.ods_user_info_d的節點輸出。您可以進入管理中心查看MaxCompute生產項目名稱。
說明DataWorks通過節點輸出掛載節點依賴關系,為了方便下游SQL任務對同步任務產出表加工時,可通過自動解析機制基于表血緣快速為下游SQL節點添加當前同步任務的依賴,此處需要確認是否存在與同步產出表ods_user_info_d同名的節點輸出。
步驟八:運行并查看結果
運行當前業務流程,將MySQL中的用戶基本信息和OSS中的用戶網站訪問日志數據寫入MaxCompute對應表。
運行業務流程
在數據開發頁面,雙擊業務流程下的WorkShop,打開Workflow業務流程面板后,單擊工具欄中的圖標,按照上下游依賴關系運行業務流程。
確認執行情況:
查看任務運行狀態:節點處于狀態,即代表同步執行過程無問題。
查看任務執行日志:右鍵單擊ods_user_info_d、ods_raw_log_d節點,選擇查看日志。當日志中出現如下字樣,表示同步節點運行成功,并成功同步數據。
查詢同步結果
預期運行業務流程后,MySQL中的用戶基本信息ods_user_info_d表數據將全量同步至workshop2024_01_dev.ods_user_info_d昨天的分區中,OSS中的用戶網站訪問日志user_log.txt將全量同步至workshop2024_01_dev.ods_raw_log_d昨天的分區中。由于查詢SQL不需要發布至生產環境執行,此時我們可以選擇創建臨時查詢文件進行確認。
新建臨時查詢文件。
在數據開發頁面的左側導航欄,單擊,進入臨時查詢面板。右鍵單擊臨時查詢,選擇
。查詢同步結果表。
執行如下SQL語句,確認同步數據寫入結果。查看導入ods_raw_log_d和ods_user_info_d的記錄數。
//此處您需要變更分區過濾條件為您當前操作的實際業務日期。例如,任務運行的日期為20230621,則業務日期為20230620,即任務運行日期的前一天。 select count(*) from ods_user_info_d where dt=業務日期; select count(*) from ods_raw_log_d where dt=業務日期;
說明本教程由于在DataStudio(開發環境)執行,所以該數據將默認寫入開發環境對應的引擎項目workshop2024_01_dev的指定表中。
步驟九:提交業務流程
代碼調試完成后,將用戶畫像分析業務流程提交至調度系統進行周期性調度,即周期性將原始業務數據同步至MaxCompute目標表。
進入業務流程面板。
在數據開發頁面,雙擊業務流程名WorkShop,進入WorkShop業務流程面板。
提交業務流程。
在業務流程畫布中,單擊工具欄中的圖標,提交該業務流程。
確認提交操作。
在提交對話框中選擇當前業務流程中的所有節點,并勾選忽略輸入輸出不一致的告警。確認無誤后單擊確認,將提交該業務流程中的所有任務,并前往任務發布界面將其發布至生產環境。
后續步驟
現在,您已經學習了如何進行日志數據同步,完成數據的同步,您可以繼續下一個教程。在該教程中,您將學習如何對同步的數據進行計算與分析。詳情請參見數據加工。