全部產品
Search
文件中心

DataWorks:GBase8a資料來源

更新時間:Jun 19, 2024

GBase8a資料來源為您提供讀取和寫入GBase8a雙向通道的功能,本文為您介紹DataWorks的GBase8a資料同步的能力支援情況。

使用限制

  • 目前Gbase8a Reader和Gbase8a Writer僅支援使用新增和使用獨享Data Integration資源群組

  • insert into...:當主鍵或唯一性索引衝突時,無法寫入衝突的行。

  • 目的表所在資料庫必須是主庫才能寫入資料。

    說明

    整個任務需要至少具備insert into...的許可權。是否需要其它許可權,取決於您配置任務時,在preSqlpostSql中指定的語句。

  • Gbase8a Writer不支援配置writeMode參數。

資料同步任務開發

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

建立資料來源

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

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

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

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

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

Reader指令碼Demo

{
    "type": "job",
    "steps": [
        {
            "stepType": "gbase8a", //外掛程式名。
            "parameter": {
                "datasource": "", //資料來源名。
                "username": "",
                "password": "",
                "where": "",
                "column": [ //欄位。
                    "id",
                    "name"
                ],
                "splitPk": "id",
                "connection": [
                    {
                        "table": [ //表名。
                            "table"
                        ],
                        "datasource":""
                    }
                ]
            },
            "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

如果您使用的DataWorks版本支援添加Gbase8a資料來源,即可在此處根據資料來源名稱引用您添加的Gbase8a資料來源。

table

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

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

說明

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

column

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

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

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

  • 支援常量配置:例如,'123'

  • 支援函數列:例如,date('now')

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

splitPk

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

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

  • 目前splitPk僅支援整型資料切分,不支援字串、浮點和日期等其它類型 。如果您指定其它非支援類型,則忽略splitPk功能,使用單通道進行同步。

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

where

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

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

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

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

querySql

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

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

fetchSize

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

說明

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

1,024

Writer指令碼Demo

{
    "type":"job",
    "version":"2.0",//版本號碼。
    "steps":[
        {
            "stepType":"stream",
            "parameter":{},
            "name":"Reader",
            "category":"reader"
        },
        {
            "stepType":"gbase8a",//外掛程式名。
            "parameter":{
                "datasource": "資料來源名",
                "username": "",
                "password": "",
                "column": [//欄位。
                    "id",
                    "name"
                ],
                "connection": [
                    {
                        "table": [//表名。
                            "Gbase8a_table"
                        ],
                        "datasource":""
                    }
                ],
                "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

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

table

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

說明

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

column

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

說明

column配置項必須指定,不可為空。

preSql

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

postSql

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

batchSize

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

1,024