DM(达梦)数据源作为数据中枢,为您提供读取和写入DM数据库的双向通道,能够快速解决海量数据的计算问题。本文为您介绍DataWorks的DM数据同步的能力支持情况。
使用限制
-
离线同步支持读取视图表。
-
DM Reader和DM Writer仅支持使用独享数据集成资源组。
支持的字段类型
DM Reader和DM Writer支持大部分通用的关系数据库数据类型,例如数字、字符等。但也存在部分类型没有支持的情况,请注意检查您的数据类型,根据具体的数据库进行选择。
DM Reader针对DM类型的转换列表,如下所示。
类型分类 |
DM数据类型 |
整数类 |
INT、TINYINT、SMALLINT和BIGINT |
浮点类 |
REAL、FLOAT、DOUBLE、NUMBER和DECIMAL |
字符串类 |
CHAR、VARCHAR、LONGVARCHAR和TEXT |
日期时间类 |
DATE、DATETIME、TIMESTAMP和TIME |
布尔型 |
BIT |
二进制类 |
BINARY、VARBINARY和BLOB |
数据同步任务开发
DM数据同步任务的配置入口和通用配置流程指导可参见下文的配置指导,详细的配置参数解释可在配置界面查看对应参数的文案提示。
创建数据源
在进行数据同步任务开发时,您需要在DataWorks上创建一个对应的数据源,操作流程请参见创建与管理数据源。
单表离线同步任务配置指导
-
操作流程请参见通过向导模式配置离线同步任务、通过脚本模式配置离线同步任务。
-
脚本模式配置的全量参数和脚本Demo请参见下文的附录:脚本Demo与参数说明。
整库离线读同步配置指导
操作流程请参见数据集成侧同步任务配置。
附录:脚本Demo与参数说明
附录:离线任务脚本配置方式
如果您配置离线任务时使用脚本模式的方式进行配置,您需要在任务脚本中按照脚本的统一格式要求编写脚本中的reader参数和writer参数,脚本模式的统一要求请参见通过脚本模式配置离线同步任务,以下为您介绍脚本模式下的数据源的Reader参数和Writer参数的指导详情。
Reader脚本Demo
{
"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。
}
},
"steps": [
{
"category": "reader",
"name": "Reader",
"parameter": {
"datasource": "dm_datasource",
"table": "table",
"column": [
"*"
],
"preSql": [
"delete from XXX;"
],
"fetchSize": 2048
},
"stepType": "dm"
},
{
"category": "writer",
"name": "Writer",
"parameter": {},
"stepType": "stream"
}
],
"type": "job",
"version": "2.0"
}
Reader脚本参数
参数 |
描述 |
是否必选 |
默认值 |
datasource |
输入DM数据源名称,配置数据源详情请参见配置DM数据源。 |
是 |
无 |
table |
所选取的需要同步的表。 |
是 |
无 |
column |
所配置的表中需要同步的列名集合,使用JSON的数组描述字段信息,默认使用所有列配置,例如[ * ]:
|
是 |
无 |
splitPk |
DM Reader进行数据抽取时,如果指定splitPk,表示您希望使用splitPk代表的字段进行数据分片。数据同步系统会启动并发任务进行数据同步,以提高数据同步的效能:
|
否 |
空 |
where |
筛选条件,DM Reader根据指定的column、table和where条件拼接SQL,并根据该SQL进行数据抽取。例如在做测试时,可以将where条件指定为limit 10。 在实际业务场景中,通常会选择当天的数据进行同步,可以将where条件指定为
|
否 |
无 |
querySql |
在部分业务场景中,where配置项不足以描述所筛选的条件,您可以通过该配置型来自定义筛选SQL。当您配置该项后,数据同步系统会忽略column、table等配置,直接使用该配置项的内容对数据进行筛选。 例如,需要进行多表join后同步数据,使用 |
否 |
无 |
fetchSize |
该配置项定义了插件和数据库服务器端每次批量数据获取条数,该值决定了数据同步系统和服务器端的网络交互次数,能够提升数据抽取性能。 说明 fetchSize值过大(>2048)可能造成数据同步进程OOM。 |
否 |
1,024 |
Writer脚本Demo
{
"type": "job",
"steps": [
{
"stepType": "oracle",
"parameter": {
"datasource": "aaa",
"column": [
"PROD_ID",
"name"
],
"where": "",
"splitPk": "",
"encoding": "UTF-8",
"table": "PENGXI.SALES"
},
"name": "Reader",
"category": "reader"
},
{
"stepType": "dm",
"parameter": {
"datasource": "dm_datasource",
"table": "table",
"column": [
"id",
"name"
],
"preSql": [
"delete from XXX;"
]
},
"name": "Writer",
"category": "writer"
}
],
"version": "2.0",
"order": {
"hops": [
{
"from": "Reader",
"to": "Writer"
}
]
},
"setting": {
"errorLimit": {
"record": ""
},
"speed": {
"throttle":true,//当throttle值为false时,mbps参数不生效,表示不限流;当throttle值为true时,表示限流。
"concurrent":2, //作业并发数。
"mbps":"12"//限流,此处1mbps = 1MB/s。
}
}
}
Writer脚本参数
参数 |
描述 |
是否必选 |
默认值 |
datasource |
输入DM数据源名称,配置数据源详情请参见配置DM数据源。 |
是 |
无 |
table |
目标表名称,如果表的Schema信息和上述配置username不一致,请使用 |
是 |
无 |
column |
所配置的表中需要同步的列名集合。以英文逗号(,)进行分隔。 说明 建议您不要使用默认列情况。 |
是 |
无 |
preSql |
执行数据同步任务之前率先执行的SQL语句,目前只允许执行一条SQL语句,例如清除旧数据。 说明 当有多条SQL语句时,不支持事务。 |
否 |
无 |
postSql |
执行数据同步任务之后执行的SQL语句,目前只允许执行一条SQL语句,例如加上某一个时间戳。 说明 当有多条SQL语句时,不支持事务。 |
否 |
无 |
batchSize |
一次性批量提交的记录数大小,该值可以极大减少数据集成与DM(达梦)的网络交互次数,并提升整体吞吐量。但是该值设置过大可能会造成数据集成运行进程OOM情况。 |
否 |
1024 |
内容没看懂? 不太想学习?想快速解决? 有偿解决: 联系专家
阿里云企业补贴进行中: 马上申请
腾讯云限时活动1折起,即将结束: 马上收藏
同尘科技为腾讯云授权服务中心。
购买腾讯云产品享受折上折,更有现金返利:同意关联,立享优惠
转转请注明出处:https://www.yunxiaoer.com/169007.html