配置DWS目的端參數
更新時間 2023-07-10 10:19:56
最近更新時間: 2023-07-10 10:19:56
分享文章
本章節主要介紹配置DWS目的端參數。
作業中目的連接為配置常見關系數據庫連接,目的端作業參數如下表所示。
表 目的端為DWS時的作業參數
| 參數類型 | 參數名 | 說明 | 取值樣例 |
|---|---|---|---|
| 基本參數 | 模式或表空間 | 待寫入數據的數據庫名稱,支持自動創建Schema。單擊輸入框后面的按鈕可選擇模式或表空間。 | schema |
| 基本參數 | 自動創表 | 只有當源端為關系數據庫時,才有該參數。表示寫入表數據時,用戶選擇的操作: 不自動創建:不自動建表。 不存在時創建:當目的端的數據庫沒有“表名”參數中指定的表時,CDM會自動創建該表。如果“表名”參數配置的表已存在,則不創建,數據寫入到已存在的表中。 先刪除后創建:CDM先刪除“表名”參數中指定的表,然后再重新創建該表。 當選擇在DWS端自動創表時,DWS的表與源表的字段類型映射關系見在DWS端自動建表時的字段類型映射。 |
不自動創建 |
| 基本參數 | 表名 | 寫入數據的目標表名,單擊輸入框后面的按鈕可進入表的選擇界面。 該參數支持配置為時間宏變量,且一個路徑名中可以有多個宏定義變量。使用時間宏變量和定時任務配合,可以實現定期同步新增數據。 |
table |
| 基本參數 | 是否壓縮 | 導入數據到DWS且選擇自動創表時,用戶可以指定是否壓縮存儲。 | 否 |
| 基本參數 | 存儲模式 | 導入數據到DWS且選擇自動創表時,用戶可以指定存儲模式: 行模式:表的數據將以行式存儲,適用于點查詢(返回記錄少,基于索引的簡單查詢),或者增刪改比較多的場景。 列模式:表的數據將以列式存儲,適用于統計分析類查詢(group、join多的場景),或者即席查詢(查詢條件不確定,行模式表掃描難以使用索引)的場景。 |
行模式 |
| 基本參數 | 導入模式 | 導入數據到DWS時,用戶可以指定導入模式: COPY模式,源數據經過管理節點后,復制到DWS的DataNode節點。 UPSERT模式,數據發生主鍵或唯一約束沖突時,更新除了主鍵和唯一約束列的其他列數據。 |
COPY |
| 基本參數 | 導入開始前 | 導入數據前,選擇是否清除目的表的數據: 不清除:寫入數據前不清除目標表中數據,數據追加寫入。 清除全部數據:寫入數據前會清除目標表中數據。 清除部分數據:需要配置“where條件”參數,CDM根據條件選擇性刪除目標表的數據。 |
清除部分數據 |
| 基本參數 | where條件 | “導入開始前”參數選擇為“清除部分數據”時配置,配置后導入前根據where條件刪除目的表的數據。 | age > 18 and age <= 60 |
| 基本參數 | 約束沖突處理 | 當遷移數據出現沖突時的處理方式。 insert into:當存在主鍵、唯一性索引沖突時,數據無法寫入并將以臟數據的形式存在。 replace into:當存在主鍵、唯一性索引沖突時,會先刪除原有行、再插入新行,替換原有行的所有字段。 on duplicate key update,當存在主鍵、唯一性索引沖突時,目的表中約束沖突的行除開唯一約束列的其他數據列將被更新。 |
insert into |
| 基本參數 | loader線程數 | 每個loader內部啟動的線程數,可以提升寫入并發數。 說明 不支持“約束沖突處理”策略為“replace into”或“on duplicate key update”的并發場景。 |
1 |
| 高級參數 | 先導入階段表 | 如果選擇“是”,則啟用事務模式遷移,CDM會自動創建臨時表,先將數據導入到該臨時表,導入成功后再通過數據庫的事務模式將數據遷移到目標表中,導入失敗則將目的表回滾到作業開始之前的狀態。 默認為“否”,CDM直接將數據導入到目的表。這種情況下如果作業執行失敗,已經導入到目標表中的數據不會自動回滾。 說明 如果“導入開始前”選擇“清除部分數據”或“清除全部數據”,CDM的事務模式不會回滾已經刪除的數據。 |
否 |
| 高級參數 | 擴大字符字段長度 | 選擇自動創表時,遷移過程中可將字符類型的字段長度擴大為原來的3倍,再寫入到目的表中。如果源端數據庫與目的端數據庫字符編碼不一樣,但目的表字符類型字段與源表一樣,在遷移數據時,可能會有出現長度不足的錯誤。 應用場景主要是將有中文內容的字符字段導入到DWS時,需要自動將字符長度放大3倍。 在導入中文內容的字符到DWS時,如果作業執行失敗,且日志中出現類似“value too long for type character varying”的錯誤,則可以通過啟用該功能解決。 說明 當啟動該功能時,也會導致部分字段消耗用戶相應的3倍存儲空間。 |
否 |
| 高級參數 | 使用非空約束 | 當選擇自動創建目的表時,如果選擇使用非空約束,則目的表字段的是否非空約束,與原表具有相應非空約束的字段保持一致。 | 是 |
| 高級參數 | 導入前準備語句 | 執行任務之前率先執行的SQL語句。目前向導模式僅允許執行一條SQL語句。 | create temp table |
| 高級參數 | 導入后完成語句 | 執行任務之后執行的SQL語句,目前僅允許執行一條SQL語句。 | merge into |
在DWS端自動建表時的字段類型映射
CDM在數據倉庫服務(Data Warehouse Service,簡稱DWS)中自動建表時,DWS的表與源表的字段類型映射關系如下圖所示。例如使用CDM將Oracle整庫遷移到DWS,CDM在DWS上自動建表,會將Oracle的 NUMBER(3,0) 字段映射到DWS的 SMALLINT 。
圖 自動建表的字段映射
