本教程以MySQL中的使用者基本資料(ods_user_info_d)表及OSS中的網站訪問日誌資料(user_log.txt)檔案,通過Data Integration離線同步任務分別同步至MaxCompute的ods_user_info_d、ods_raw_log_d表為例,為您介紹如何通過DataWorksData Integration實現異構資料來源間的資料同步,完成數倉資料同步操作。
前提條件
已為您準備該實驗所需的使用者資訊資料和使用者網站訪問記錄資料,並分別存放於平台提供的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工作流程範本快捷入口,請點擊網站使用者行為分析。
背景資訊
Data Integration是穩定高效、Auto Scaling的資料同步平台,致力於提供複雜網路環境下、豐富的異構資料來源之間高速穩定的資料移動及同步能力,提供離線同步、增量同步處理、全增量資料即時同步等多種同步方案。
本教程採用離線同步方案,DataWorks將Data Integration離線同步能力封裝為離線同步節點,一個離線同步節點代表一個同步任務,節點內通過資料來源與資料去向定義資料來源之間的資料轉送,通過欄位對應的方式定義源端欄位與目標端欄位的資料讀取與寫入關係。
平台已提供本教程所需的測試資料及資料來源,您需將該資料來源添加至您的工作空間,即可在工作空間訪問平台提供的測試資料。
本教程提供資料僅作為阿里雲巨量資料開發治理平台DataWorks資料應用實操使用,所有資料均為人工Mock資料,並且只支援在Data Integration模組讀取資料。
章節目標
將MySQL儲存的使用者基本資料及OSS儲存的網站訪問日誌資料,通過Data Integration服務同步至MaxCompute,具體資料寫入情況如下:
源端資料來源 | 目標資料來源(MaxCompute) | |
MySQL | 表:ods_user_info_d
| 表:ods_user_info_d
|
OSS | 檔案:user_log.txt
| 表:ods_raw_log_d
|
步驟一:購買並配置獨享Data Integration資源群組
本教程需將儲存在OSS、MySQL中的資料同步至MaxCompute,同步任務需使用DataWorks的獨享Data Integration資源群組,因此您需要先購買獨享Data Integration資源群組,並完成前期的準備工作。
購買獨享Data Integration資源群組。
登入並進入獨享資源購買頁面,選擇地區和可用性區域為華東2(上海)、獨享資源類型為獨享Data Integration資源,其他參數可根據介面提示進行配置,完成後根據介面提示完成付款。獨享Data Integration資源群組的計費說明請參見獨享Data Integration資源群組計費說明:訂用帳戶。
說明本教程將使用華東2(上海)地區的獨享Data Integration資源群組進行樣本示範,需注意獨享Data Integration資源群組不支援跨地區操作。
配置獨享Data Integration資源群組。
登入DataWorks控制台,切換至目標地區後,單擊左側導覽列的資源群組列表,進入資源群組列表頁面。
在獨享資源群組頁簽中,找到購買的獨享Data Integration資源群組,單擊操作列的修改歸屬工作空間,根據介面提示將資源群組綁定至已建立的DataWorks工作空間。
更多新增和使用獨享Data Integration資源群組的操作指導請參見新增和使用獨享Data Integration資源群組。
步驟二:建立資料來源
本教程需要分別在您當前空間建立名為user_behavior_analysis_httpfile的HttpFile資料來源、名為user_behavior_analysis_mysql的MySQL資料來源用於訪問平台提供的測試資料,測試使用的資料來源基本資料已提供。
在Data Integration同步任務配置前,您可以在DataWorks的資料來源頁面,配置好您需要同步的源端和目標端資料庫或資料倉儲的相關資訊,以便在同步任務配置過程中,可通過選擇資料來源名稱來控制同步讀取和寫入的資料庫或資料倉儲。
本教程提供資料僅作為阿里雲巨量資料開發治理平台DataWorks資料應用實操使用,所有資料均為人工Mock資料,並且只支援在Data Integration模組讀取資料。
建立HttpFile資料來源(user_behavior_analysis_httpfile)
在您的工作空間中建立HttpFile資料來源,用於後續讀取平台提供的存放於OSS中的使用者網站訪問測試資料,並測試該資料來源與同步資料的資源群組網路是否連通。
進入資料來源頁面。
登入DataWorks控制台,切換至目標地區後,單擊左側導覽列的管理中心,在下拉框中選擇對應工作空間後單擊進入管理中心。
進入工作空間管理中心頁面後,單擊左側導覽列的
,進入資料來源頁面。
建立HttpFile資料來源。
在管理中心頁面,單擊進入
頁面後單擊新增資料來源。在新增資料來源對話方塊中,搜尋選擇資料來源類型為HttpFile。
在建立HttpFile資料來源對話方塊,配置各項參數,主要參數配置描述如下:
主要參數
描述
資料來源名稱
輸入資料來源名稱,該名稱為資料來源在您工作空間中的標識,本案例中設定資料來源名稱為user_behavior_analysis_httpfile。
資料來源描述
輸入DataWorks案例體驗專用資料來源,在離線同步配置時讀取該資料來源即可訪問平台提供的測試資料,該資料來源只支援Data Integration情境去讀取,其他模組不支援使用。
適用環境
勾選開發環境、生產環境。
說明您需要同步建立開發環境及生產環境的資料來源,否則任務生產執行會報錯。
URL網域名稱
輸入
https://dataworks-workshop-2024.oss-cn-shanghai.aliyuncs.com
。資源群組連通性
在串連配置地區的獨享Data Integration資源群組後,單擊連通狀態列的測試連通性,分別測試資源群組與開發、生產環境資料來源的網路是否連通,等待介面提示測試完成,連通狀態為可連通。
建立MySQL資料來源(user_behavior_analysis_mysql)
在您的工作空間中建立MySQL資料來源,用於後續讀取平台提供的存放於MySQL中的使用者資訊資料,並測試該資料來源與同步資料的資源群組網路是否連通。
進入資料來源頁面。
登入DataWorks控制台,切換至目標地區後,單擊左側導覽列的管理中心,在下拉框中選擇對應工作空間後單擊進入管理中心。
進入工作空間管理中心頁面後,單擊左側導覽列的
,進入資料來源頁面。
建立MySQL資料來源。
在管理中心頁面,單擊進入
頁面後單擊新增資料來源。在新增資料來源對話方塊中,搜尋選擇資料來源類型為MySQL。
在建立MySQL資料來源對話方塊,配置各項參數。
參數
描述
資料來源類型
選擇串連串模式。
資料來源名稱
請輸入user_behavior_analysis_mysql。
資料來源描述
輸入DataWorks案例體驗專用資料來源,在離線同步配置時讀取該資料來源即可訪問平台提供的測試資料,該資料來源只支援Data Integration情境去讀取,其他模組不支援使用。
適用環境
勾選開發、生產。
說明您需要同步建立開發環境及生產環境的資料來源,否則任務生產執行會報錯。
JDBC URL
輸入jdbc:mysql://rm-bp1z69dodhh85z9qa.mysql.rds.aliyuncs.com:3306/workshop。
使用者名稱
輸入使用者名稱,樣本為workshop。
密碼
輸入密碼,樣本為workshop#2017。
認證選項
無認證。
資源群組連通性
在串連配置地區的獨享Data Integration資源群組後,單擊連通狀態列的測試連通性,分別測試資源群組與開發、生產環境資料來源的網路是否連通,等待介面提示測試完成,連通狀態為可連通。
步驟三:建立商務程序
根據需求分析設計商務程序。建立兩個離線同步節點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表
提前建立用於接收通過Data Integration同步過來的未經處理資料的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統一調起使用者Portrait analysis商務程序執行,workshop_start屬於管控類節點,不需要配置節點代碼,節點調度配置如下。
進入workshop_start編輯頁面。
在資料開發頁面,雙擊相應的商務程序名,進入商務程序開發面板。雙擊虛擬節點workshop_start。進入該節點的編輯頁面,單擊右側的調度配置。
配置workshop_start調度屬性。
通過以下配置實現調度情境下,每日00:15,由工作空間根節點觸發當前節點調度。
配置調度時間:配置調度周期為日;定時調度時間為00:15。
配置重跑屬性:配置為運行成功或失敗後皆可重跑。
配置調度依賴:配置依賴的上遊節點為使用工作空間根節點。
本教程中workshop_start作為流程管控節點,無其他強上遊依賴,所以本教程直接依賴工作空間內建的根節點。即由工作空間根節點直接調起目前使用者Portrait analysis商務程序執行。
說明工作空間根節點為空白間建立後預設產生節點,一般情況下,空間下所有任務均會掛在該節點下,工作空間根節點預設從0點開始調起掛在其下遊的所有一級子節點,且該節點不支援變更。
步驟六:配置OSS資料同步節點(ods_raw_log_d)
此步驟中,通過配置ods_raw_log_d節點,實現將儲存於OSS中的使用者訪問日誌user_log.txt,通過Data Integration同步任務寫入MaxCompute的ods_raw_log_d表中。
在資料開發頁面,雙擊相應商務程序下的ods_raw_log_d節點,進入該節點的編輯頁面開始配置同步任務。
1、配置同步網路連結
此步驟中,使用獨享Data Integration資源群組測試與源端HttpFile資料來源user_behavior_analysis_httpfile,以及目標端MaxCompute資料來源的網路連通。
資料來源:資料來源選擇HttpFile,資料來源名稱選擇user_behavior_analysis_httpfile,即步驟二:建立資料來源中建立的HttpFile資料來源。
我的資源群組:選擇購買的獨享Data Integration資源群組。
資料去向:資料去向選擇MaxCompute,然後選擇對應資料來源名稱。
2、配置同步任務
同步任務基本配置。
資料來源端指定要讀取的檔案user_log.txt。
資料去向端指定OSS檔案寫入MaxCompute資料來源中的ods_raw_log_d表。並指定表分區資訊。分區資訊通過${}格式定義了名為bizdate的變數,該變數將在後續步驟3中為其賦值。
確認欄位對應及通用配置。
DataWorks通過配置源端與目標端欄位對應關係,實現源端指定欄位資料寫入目標端指定欄位,同時提供並發設定並發讀寫資料、提供限速功能避免同步對資料庫造成影響、提供髒資料影響定義及分布式執行任務等功能。本教程使用預設配置。關於其他配置項說明,詳情請參見通過嚮導模式配置離線同步任務。
3、配置調度屬性
通過以下配置實現調度情境下,每日00:15將儲存在OSS的user_log.txt檔案資料通過Data Integration同步至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、配置同步網路連結
此步驟中,使用獨享Data Integration資源群組測試與源端MySQL資料來源user_behavior_analysis_mysql,以及目標端MaxCompute資料來源的網路連通。
資料來源:資料來源選擇MySQL,資料來源名稱選擇user_behavior_analysis_mysql。
我的資源群組:選擇購買的獨享Data Integration資源群組。
資料去向:資料去向選擇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使用者資訊資料通過Data Integration同步至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的指定表中。
步驟九:提交商務程序
代碼調試完成後,將使用者Portrait analysis商務程序提交至調度系統進行周期性調度,即周期性將原始業務資料同步至MaxCompute目標表。
進入商務程序面板。
在資料開發頁面,雙擊商務程序名WorkShop,進入WorkShop商務程序面板。
提交商務程序。
在商務程序畫布中,單擊工具列中的表徵圖,提交該商務程序。
確認提交操作。
在提交對話方塊中選擇當前商務程序中的所有節點,並勾選忽略輸入輸出不一致的警示。確認無誤後單擊確認,將提交該商務程序中的所有任務,並前往任務發布介面將其發布至生產環境。
後續步驟
現在,您已經學習了如何進行日誌資料同步,完成資料的同步,您可以繼續下一個教程。在該教程中,您將學習如何對同步的資料進行計算與分析。詳情請參見資料加工。