一鍵實時同步至MaxCompute
一鍵實時同步至MaxCompute方案支持全增量一體化同步,先進行全量數(shù)據(jù)遷移,然后再實時同步增量數(shù)據(jù)至目標端。本文為您介紹如何創(chuàng)建一鍵實時同步至MaxCompute任務。
前提條件
已完成數(shù)據(jù)源配置。您需要在數(shù)據(jù)集成同步任務配置前,配置好您需要同步的源端和目標端數(shù)據(jù)庫,以便在同步任務配置過程中,可通過選擇數(shù)據(jù)源名稱來控制同步任務的讀取和寫入數(shù)據(jù)庫。同步任務支持的數(shù)據(jù)源及其配置詳情請參見支持的數(shù)據(jù)源及同步方案。
說明數(shù)據(jù)源相關能力介紹詳情請參見:數(shù)據(jù)源概述。
已完成數(shù)據(jù)源環(huán)境準備。您可以基于您需要進行的同步配置,在同步任務執(zhí)行前,授予數(shù)據(jù)源配置的賬號在數(shù)據(jù)庫進行相應操作的權限。詳情請參見:數(shù)據(jù)庫環(huán)境準備概述。
背景信息
本方案運行后會自動建立Merge任務,用于將全增量數(shù)據(jù)進行合并,其中,增量數(shù)據(jù)實時寫入MaxCompute的Log表,Log表再定期與Base表進行合并(Merge),最終將結果寫入Base表中。目前全增量Merge的頻率為一天一次。
方案屬性 | 說明 |
可同步的表個數(shù) |
|
任務組成 | 當前方案將分別創(chuàng)建用于全量數(shù)據(jù)初始化的離線同步子任務,和用于增量數(shù)據(jù)實時同步的數(shù)據(jù)集成實時同步子任務,方案產(chǎn)生的離線同步子任務個數(shù)與最終讀取的表個數(shù)有關。 |
數(shù)據(jù)寫入 | 支持全增量數(shù)據(jù)實時寫入,也支持僅進行增量數(shù)據(jù)實時同步。全增量Merge分為3個階段:
說明
以寫入分區(qū)表為例: |
注意事項
當實時同步至MaxCompute數(shù)據(jù)源且使用臨時AK進行同步時,臨時AK超過7天會自動過期,同時,將導致任務運行失敗。平臺檢測到臨時AK導致任務失敗時會自動重啟任務,如果任務配置了該類型的監(jiān)控報警,您將會收到報警信息。
一鍵實時同步至MaxCompute任務配置當天僅能查詢歷史全量數(shù)據(jù),增量數(shù)據(jù)需要等待第二天merge完成后才可在MaxCompute查詢,詳情請參見背景信息中數(shù)據(jù)寫入部分中的內(nèi)容。
本方案每天會生成一個全量分區(qū),為避免數(shù)據(jù)過多占用存儲資源,本方案任務自動建立的MaxCompute表,默認生命周期為30天。如果時長不滿足您的業(yè)務需求,可以在配置同步任務時單擊對應的MaxCompute表名修改生命周期。詳情請參見:步驟四:設置目標表。
數(shù)據(jù)集成使用MaxCompute引擎同步數(shù)據(jù)通道進行數(shù)據(jù)上傳和下載(同步數(shù)據(jù)通道SLA詳情請參見數(shù)據(jù)傳輸服務(上傳)場景與工具),請根據(jù)MaxCompute引擎同步數(shù)據(jù)通道SLA評估數(shù)據(jù)同步業(yè)務技術選型。
一鍵實時同步至MaxCompute,按實例模式同步時,獨享數(shù)據(jù)集成資源組規(guī)格最低需要為8C16G。
使用限制
僅支持與當前工作空間同地域的自建MaxCompute數(shù)據(jù)源,跨地域的MaxCompute項目在測試數(shù)據(jù)源服務連通性時可以正常連通,但同步任務執(zhí)行時,在MaxCompute建表階段會報引擎不存在的錯誤。
使用自建MaxCompute時,DataWorks工作空間的數(shù)據(jù)開發(fā)中仍需要綁定MaxCompute數(shù)據(jù)源,否則將無法創(chuàng)建MaxCompute SQL節(jié)點,導致全量同步標done節(jié)點創(chuàng)建失敗。
計費說明
一鍵實時同步至MaxCompute解決方案需要定期做全增量數(shù)據(jù)周期合并,因此會消耗MaxCompute計算資源。這部分費用由MaxCompute直接收取,費用與用戶同步全量數(shù)據(jù)大小、合并周期正相關。具體費用請參考計費項與計費方式概述。
操作流程
步驟一:選擇同步方案
創(chuàng)建同步解決方案任務,根據(jù)需求選擇需要同步的源端數(shù)據(jù)源,目標端數(shù)據(jù)源MaxCompute,并選擇一鍵實時同步至MaxCompute方案。
步驟二:配置網(wǎng)絡連通
源端選擇已創(chuàng)建的源端數(shù)據(jù)源與目標端數(shù)據(jù)源,以及用于執(zhí)行同步任務的資源組。并測試資源組與數(shù)據(jù)源的網(wǎng)絡連通。詳情請參見:配置同步網(wǎng)絡鏈接。
步驟三:設置同步來源與規(guī)則
在基本配置區(qū)域,配置同步解決方案的名稱、任務存放位置等信息。
在數(shù)據(jù)來源區(qū)域,確認需要同步的源端數(shù)據(jù)源相關信息。
在選擇同步的源表區(qū)域,選中需要同步的源表,單擊圖標,將其移動至已選源表。
該區(qū)域會為您展示所選數(shù)據(jù)源下所有的表,您可以選擇整庫全表或部分表進行同步。
在設置表(庫)名的映射規(guī)則區(qū)域,單擊添加規(guī)則,選擇相應的規(guī)則進行添加。
同步時默認將源端數(shù)據(jù)表寫入目標端同名表中,如果目標端不存在該表,將會自動創(chuàng)建。同時,您可以通過添加映射規(guī)則定義最終寫入目的端的表名稱。映射規(guī)則包括源表名和目標表名轉換規(guī)則和目標表名規(guī)則:
源表名和目標表名轉換規(guī)則:源端表名支持通過正則表達式轉換為目標端最終寫入的表名。
示例1:將源端doc_前綴的表數(shù)據(jù),寫入前綴為pre_的目標表中。
示例2:將多張表數(shù)據(jù)寫入到一張目標表。
將源端名稱為 "table_01","table_02","table_03" 的表同步至一張名為 "my_table" 的表中。配置正則表名轉換規(guī)則為:源:table.*,目標:my_table。
目標表名規(guī)則:支持您使用內(nèi)置的變量組合生成目標表名,同時,對轉換后的目標表名支持添加前綴和后綴。可使用的內(nèi)置變量有:
${db_table_name_src_transed}:“源表名和目標表名轉換規(guī)則”中的轉換完成之后的表名。
${db_name_src_transed}:“源庫名和目標Schema名轉換規(guī)則”中的轉換完成之后的目標Schema名。
${ds_name_src}:源數(shù)據(jù)源名。
示例:對上一步源表名和目標表名轉換規(guī)則轉換后的表名做進一步字符串拼接處理,使用${db_table_name_src_transed}代表上一步的處理結果“my_table”,再為該內(nèi)置變量增加前綴和后綴,例如,pre_${db_table_name_src_transed}_post,最終就映射到了名為“pre_my_table_post”的目標表。
步驟四:設置目標表
設置寫入模式。
目前支持將增量數(shù)據(jù)實時寫入MaxCompute的Log表,Log表中的增量數(shù)據(jù)再定期與目標端Base表全量數(shù)據(jù)進行合并(Merge),最終將結果寫入Base表中。
時間自動分區(qū)設置。
您可以在時間自動分區(qū)設置配置該任務寫入MaxCompute分區(qū)表或是非分區(qū)表,并定義分區(qū)字段的名稱。
說明若選擇寫入分區(qū)表,可單擊圖標定義目標表分區(qū)字段名稱。
刷新源表與目標表映射。
單擊刷新源表和MaxCompute表映射將根據(jù)您在步驟三配置的目標表名映射規(guī)則來生成目標表,若步驟三未配置映射規(guī)則,將默認寫入與源表同名的目標表,若目標端不存在該同名表,將默認新建。同時,您可以修改表建立方式,為目標表在源有表字段基礎上增加附加字段。
說明目標表名將根據(jù)您在設置表(庫)名的映射規(guī)則階段配置的表名轉換規(guī)則自動轉換。
功能
描述
為非主鍵表選擇主鍵
由于當前方案不支持無主鍵表同步,所以您需要單擊同步主鍵列的按鈕,為無主鍵表設置自選主鍵,即選擇表中一個或部分字段作為主鍵,寫入目標端時將會使用該主鍵進行去重。
選擇表建立方式
支持自動建表和使用已有表。
當表建立方式選擇使用已有表時,MaxComputeBase 表名列顯示已有MaxCompute表。您也可以在下拉列表中選擇需要使用的表名稱。
當表建立方式選擇自動建表時,顯示自動創(chuàng)建的表名稱。您可以單擊表名稱,查看和修改建表語句。
是否全量同步
您可以在全量同步列選擇是否需要在實時同步前先將全量數(shù)據(jù)同步至目標端。
如果關閉全量同步,則對應的表將不進行離線全量同步。適用于已經(jīng)通過其他方式將全量數(shù)據(jù)同步至目標端的場景。
為目標字段添加附加字段
單擊操作列的編輯附加字段,可以為目標表在源端字段的基礎上增加字段并為字段賦值。支持手動賦值常量與變量。
說明僅在表建立方式為自動建表時,可以使用此功能。
數(shù)據(jù)集成附加字段支持的變量字段如下:
EXECUTE_TIME:執(zhí)行時間 UPDATE_TIME:更新時間 DB_NAME_SRC:原始數(shù)據(jù)庫名稱 DB_NAME_SRC_TRANSED:轉換后數(shù)據(jù)庫名稱 DATASOURCE_NAME_SRC:源端數(shù)據(jù)源名稱 DATASOURCE_NAME_DEST:目的端數(shù)據(jù)源名稱 DB_NAME_DEST:目的端數(shù)據(jù)庫名稱 TABLE_NAME_DEST:目的端表名稱 TABLE_NAME_SRC:源端表名稱
編輯目標表結構
目前自動建表生成的MaxCompute表生命周期默認只有30天,并且可能存在字段類型映射,即若目標端數(shù)據(jù)庫中沒有與源端一致的數(shù)據(jù)類型時,同步任務在自動創(chuàng)建目標表時,將自動為源端字段匹配目標端可寫入的字段類型。若您需要修改MaxCompute表生命周期或修改目標表字段類型映射,您可單擊MaxComputeBase 表名列的目標表名進行修改。
說明僅在表建立方式為自動建表時,可以使用此功能。
目標表、字段及數(shù)據(jù)讀取寫入關系確認無誤后,單擊下一步。
步驟五:DDL消息處理策略
來源數(shù)據(jù)源會包含許多DDL操作,數(shù)據(jù)集成體提供默認處理策略,您也可以根據(jù)業(yè)務需求,對不同的DDL消息設置同步至目標端的處理策略。不同DDL消息處理策略請參見:DDL消息處理規(guī)則。
步驟六:設置任務運行資源
當前方案創(chuàng)建后將分別生成全量數(shù)據(jù)離線同步子任務和增量數(shù)據(jù)實時同步子任務。您需要在運行資源設置界面配置離線同步任務和實時同步任務的相關屬性。
包括實時增量同步及離線全量同步使用的獨享數(shù)據(jù)集成資源組、離線全量同步使用的調(diào)度資源組,同時,單擊高級配置可配置是否容忍臟數(shù)據(jù)、任務最大并發(fā)數(shù)、源庫允許支持的最大連接數(shù)等參數(shù)。
DataWorks的離線同步任務通過調(diào)度資源組將其下發(fā)到數(shù)據(jù)集成任務執(zhí)行資源組上執(zhí)行,所以離線同步任務除了涉及數(shù)據(jù)集成任務執(zhí)行資源組外,還會占用調(diào)度資源組資源。如果使用了獨享調(diào)度資源組,將會產(chǎn)生調(diào)度實例費用。您可通過任務下發(fā)機制對該機制進行了解。
離線和實時同步任務推薦使用不同的資源組,以便任務分開執(zhí)行。如果選擇同一個資源組,任務混跑會帶來資源搶占、運行態(tài)互相影響等問題。例如,CPU、內(nèi)存、網(wǎng)絡等互相影響,可能會導致離線任務變慢或實時任務延遲等問題,甚至在資源不足的極端情況下,可能會出現(xiàn)任務被OOM KILLER殺掉等問題。
步驟七:執(zhí)行同步任務
進入 界面,找到已創(chuàng)建的同步方案。
單擊操作列的啟動/提交執(zhí)行按鈕,啟動同步的運行。
單擊操作列的執(zhí)行詳情,查看任務的詳細執(zhí)行過程。
后續(xù)步驟
完成任務配置后,您可以對已創(chuàng)建的任務進行管理、執(zhí)行加減表操作,或對任務配置監(jiān)控報警,并查看任務運行的關鍵指標等。詳情請參見:全增量同步任務運維。
附:Base表數(shù)據(jù)未產(chǎn)出排查思路
Merge流程 | 現(xiàn)象 | 原因 | 解決方案 |
增量Log表T-1分區(qū)數(shù)據(jù)產(chǎn)出檢查失敗。 | 實時同步任務執(zhí)行異常,導致增量Log表T-1分區(qū)數(shù)據(jù)未正常產(chǎn)出。 |
| |
目標端Base表T-2分區(qū)數(shù)據(jù)產(chǎn)出檢查失敗。 |
|
|