GBase8a数据源为您提供读取和写入GBase8a双向通道的功能,本文为您介绍DataWorks的GBase8a数据同步的能力支持情况。
使用限制
目前Gbase8a Reader和Gbase8a Writer仅支持使用新增和使用独享数据集成资源组。
insert into...
:当主键或唯一性索引冲突时,无法写入冲突的行。目的表所在数据库必须是主库才能写入数据。
说明整个任务需要至少具备
insert into...
的权限。是否需要其它权限,取决于您配置任务时,在preSql和postSql中指定的语句。Gbase8a Writer不支持配置writeMode参数。
数据同步任务开发
GBase8a数据同步任务的配置入口和通用配置流程指导可参见下文的配置指导,详细的配置参数解释可在配置界面查看对应参数的文案提示。
创建数据源
在进行数据同步任务开发时,您需要在DataWorks上创建一个对应的数据源,操作流程请参见创建与管理数据源。
单表离线同步任务配置指导
操作流程请参见通过向导模式配置离线同步任务、通过脚本模式配置离线同步任务。
脚本模式配置的全量参数和脚本Demo请参见下文的附录:脚本Demo与参数说明。
附录:脚本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的数组描述字段信息 。默认使用所有列配置,例如[ * ]。
| 是 | 无 |
splitPk | Gbase8a Reader进行数据抽取时,如果指定splitPk,表示您希望使用splitPk代表的字段进行数据分片,数据同步因此会启动并发任务进行数据同步,提高数据同步的效能。
| 否 | 空 |
where | 筛选条件,Gbase8a Reader根据指定的column、table、where条件拼接SQL,并根据该SQL进行数据抽取。 例如,在进行测试时,可以指定where条件为limit 10。在实际业务场景中,通常会选择当天的数据进行同步,指定where条件为
| 否 | 无 |
querySql | 在部分业务场景中,where配置项不足以描述所筛选的条件,您可以通过该配置型来自定义筛选SQL。配置该项后,数据同步系统会忽略tables、columns和splitPk配置项,直接使用该项配置的内容对数据进行筛选。 当您配置querySql时,Gbase8a Reader直接忽略table、column、where和splitPk条件的配置。 | 否 | 无 |
fetchSize | 该配置项定义了插件和数据库服务器端每次批量数据获取条数,该值决定了数据集成和服务器端的网络交互次数,能够较大地提升数据抽取性能。 说明 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配置项必须指定,不能为空。 | 是 | 无 |
preSql | 写入数据至目标表前,会先执行此处的标准语句。如果SQL中有需要操作的表名称,请使用 | 否 | 无 |
postSql | 写入数据至目标表后,会执行此处的标准语句。 | 否 | 无 |
batchSize | 一次性批量提交的记录数大小,该值可以极大减少数据同步系统与Gbase8a的网络交互次数,并提升整体吞吐量。如果该值设置过大,会导致数据同步运行进程OOM异常。 | 否 | 1,024 |