全部產品
Search
文件中心

DataWorks:Vertica資料來源

更新時間:Jun 19, 2024

Vertica是一款基於列儲存的MPP架構的資料庫,Vertica資料來源為您提供讀取和寫入Vertica雙向通道的功能,本文為您介紹DataWorks的Vertica資料同步的能力支援情況。

支援的版本

Vertica Reader通過Vertica資料庫驅動訪問Vertica,您需要確認Vertica驅動和您的Vertica服務之間的相容能力。資料庫驅動使用如下版本。

<dependency>
<groupId>com.vertica</groupId>
<artifactId>vertica-jdbc</artifactId>
<version>7.1.2</version>
</dependency>

使用限制

支援的欄位類型

支援常見的Vertica資料類型(包括整形、浮點型、字串、時間等)的同步,但對於一些進階類型支援有限。

資料同步任務開發

Vertica資料同步任務的配置入口和通用配置流程指導可參見下文的配置指導,詳細的配置參數解釋可在配置介面查看對應參數的文案提示。

建立資料來源

在進行資料同步任務開發時,您需要在DataWorks上建立一個對應的資料來源,操作流程請參見建立並管理資料來源

單表離線同步任務配置指導

附錄:指令碼Demo與參數說明

附錄:離線任務指令碼配置方式

如果您配置離線任務時使用指令碼模式的方式進行配置,您需要在任務指令碼中按照指令碼的統一格式要求編寫指令碼中的reader參數和writer參數,指令碼模式的統一要求請參見通過指令碼模式配置離線同步任務,以下為您介紹指令碼模式下的資料來源的Reader參數和Writer參數的指導詳情。

Reader指令碼Demo

{
"type": "job",
"steps": [
{
"stepType": "vertica", //外掛程式名。
"parameter": {
"datasource": "", //資料來源名。
"where": "",
"column": [ //欄位。
"id",
"name"
],
"splitPk": "id",
"connection": [
{
"table": [ //表名。
"table"
]
}
]
},
"name": "Reader",
"category": "reader"
},
{
"stepType": "stream",
"parameter": {
"print": false,
"fieldDelimiter": ","
},
"name": "Writer",
"category": "writer"
}
],
"version": "2.0",
"order": {
"hops": [
{
"from": "Reader",
"to": "Writer"
}
]
},
"setting": {
"errorLimit": {
"record": "0" //錯誤記錄數。
},
"speed": {
"throttle": true, //當throttle值為false時,mbps參數不生效,表示不限流;當throttle值為true時,表示限流。
"concurrent": 1, //作業並發數。
                        "mbps":"12"//限流,此處1mbps = 1MB/s。
}
}
}

Reader指令碼參數

參數

描述

是否必選

預設值

datasource

資料來源名稱,指令碼模式支援添加資料來源,此配置項填寫的內容必須要與添加的資料來源名稱保持一致。

table

選取的需要同步的表。使用JSON的數組進行描述,支援同時讀取多張表。

當配置為多張表時,您需要保證多張表的schema結構一致,Vertica Reader不檢查表的邏輯是否統一。

說明

table必須包含在connection登錄區中。

column

所配置的表中需要同步的列名集合,使用JSON的數組描述欄位資訊 。預設使用所有列配置,例如[ * ]。

  • 支援列裁剪,即列可以挑選部分列進行匯出。

  • 支援列換序,即列可以不按照表schema資訊順序進行匯出。

  • 支援常量配置。

  • column必須顯示指定同步的列集合,不允許為空白。

splitPk

Vertica Reader進行資料幫浦時,如果指定splitPk,表示您希望使用splitPk代表的欄位進行資料分區,資料同步因此會啟動並發任務進行資料同步,提高資料同步的效能。

  • 推薦splitPk使用者使用表主鍵,因為表主鍵通常情況下比較均勻,因此切分出來的分區不容易出現資料熱點。

  • 目前splitPk僅支援整型資料切分,不支援字串、浮點、日期等其它類型 。如果您指定其它非支援類型,Vertica Reader將報錯。

  • 如果設定splitPk為空白,底層將視作您不允許對單表進行切分,因此使用單通道進行抽取。

where

篩選條件,Vertica Reader根據指定的columntablewhere條件拼接SQL,並根據該SQL進行資料幫浦。

例如在測試時,可以指定where條件。在實際業務情境中,通常會選擇當天的資料進行同步,可以將where條件指定為gmt_create > $bizdate

  • where條件可以有效地進行業務增量同步處理。

  • where條件不配置或者為空白,視作全表同步資料。

querySql

在部分業務情境中,where配置項不足以描述所篩選的條件,您可以通過該配置型來自訂篩選SQL。配置該項後,資料同步系統會忽略tablescolumnssplitPk配置項,直接使用該項配置的內容對資料進行篩選。

當您配置querySql時,Vertica Reader直接忽略tablecolumnwhere條件的配置。

fetchSize

該配置項定義了外掛程式和資料庫伺服器端每次批量資料擷取條數,該值決定了Data Integration和伺服器端的網路互動次數,能夠較大地提升資料幫浦效能。

說明

fetchSize值過大(>2048)可能造成資料同步進程OOM。

1,024

Writer指令碼Demo

{
"type":"job",
"version":"2.0",//版本號碼。
"steps":[
{
"stepType":"stream",
"parameter":{},
"name":"Reader",
"category":"reader"
},
{
"stepType":"vertica",//外掛程式名。
"parameter":{
"datasource": "資料來源名",
"column": [//欄位。
"id",
"name"
],
"connection": [
{
"table": [//表名。
"vertica_table"
]
}
],
"preSql": [ //執行資料同步任務之前率先執行的SQL語句。
"delete from @table where db_id = -1"
],
"postSql": [//執行資料同步任務之後率先執行的SQL語句。
"update @table set db_modify_time = now() where db_id = 1"
]
},
"name":"Writer",
"category":"writer"
}
],
"setting":{
"errorLimit":{
"record":"0"//錯誤記錄數。
},
"speed":{
                    "throttle":true,//當throttle值為false時,mbps參數不生效,表示不限流;當throttle值為true時,表示限流。
                    "concurrent":1, //作業並發數。
                    "mbps":"12"//限流,此處1mbps = 1MB/s。
}
},
"order":{
"hops":[
{
"from":"Reader",
"to":"Writer"
}
]
}
}

Writer指令碼參數

參數

描述

是否必選

預設值

datasource

資料來源名稱,指令碼模式支援添加資料來源,此配置項填寫的內容必須與添加的資料來源名稱保持一致。

jdbcUrl

描述的是到對端資料庫的JDBC串連資訊,jdbcUrl包含在connection登錄區中:

  • 在一個資料庫上只能配置一個值,不支援同一個資料庫存在多個主庫的情況(雙主匯入資料情況)。

  • jdbcUrl的格式和Vertica官方一致,並可以串連附加參數資訊。例如,jdbc:vertica://127.0.0.1:3306/database

username

資料來源的使用者名稱。

password

資料來源指定使用者名稱的密碼。

table

選取的需要同步的表名稱,使用JSON的數組進行描述。

說明

table必須包含在connection登錄區中。

column

目標表需要寫入資料的欄位,欄位之間用英文逗號分隔,例如"column": ["id", "name", "age"]

preSql

寫入資料至目標表前,會先執行此處的標準語句。如果SQL中有需要操作的表名稱,請使用@table表示,以便在實際執行SQL語句時,對變數按照實際表名稱進行替換。

postSql

寫入資料至目標表後,會執行此處的標準語句。

batchSize

一次性批量提交的記錄數大小,該值可以極大減少資料同步系統與Vertica的網路互動次數,並提升整體輸送量。如果該值設定過大,會導致資料同步運行進程OOM異常。

1,024