本文为您介绍Gbase8a Writer支持的数据类型、字段映射和数据源等参数及配置示例。
Gbase8a是一款基于列存储的新型分析型数据库,Gbase8a Writer插件实现了写入数据至Gbase8a数据库的功能。
重要 Gbase8a Writer仅支持使用新增和使用独享数据集成资源组,不支持使用默认资源组和自定义资源组。
在底层实现上,Gbase8a Writer通过JDBC连接远程Gbase8a数据库,并执行相应的insert into
语句,将数据写入Gbase8a,数据会分批次提交入库。
Gbase8a Writer面向ETL开发工程师,通过Gbase8a Writer从数仓导入数据至Gbase8a。同时Gbase8a Writer可以作为数据迁移工具,为数据库管理员等用户提供服务。
Gbase8a Writer通过数据集成框架获取Reader生成的协议数据,根据您的配置生成相应的SQL插入语句。
使用限制
insert into...
:当主键或唯一性索引冲突时,无法写入冲突的行。- 目的表所在数据库必须是主库才能写入数据。
说明 整个任务需要至少具备
insert into...
的权限。是否需要其它权限,取决于您配置任务时,在preSql和postSql中指定的语句。 - Gbase8a Writer不支持配置writeMode参数。
参数说明
参数 | 描述 | 是否必选 | 默认值 |
---|---|---|---|
datasource | 数据源名称,脚本模式支持添加数据源,此配置项填写的内容必须与添加的数据源名称保持一致。 | 是 | 无 |
table | 需要同步写出的表名称,使用JSON的数组进行描述。
说明 table必须包含在connection配置单元中。
|
是 | 无 |
column | 目标表需要写入数据的字段,字段之间用英文所逗号分隔。例如,"column": ["id", "name", "age"] 。
说明 column配置项必须指定,不能为空。
|
是 | 无 |
preSql | 写入数据至目标表前,会先执行此处的标准语句。如果SQL中有需要操作的表名称,请使用@table 表示,以便在实际执行SQL语句时,对变量按照实际表名称进行替换。
|
否 | 无 |
postSql | 写入数据至目标表后,会执行此处的标准语句。 | 否 | 无 |
batchSize | 一次性批量提交的记录数大小,该值可以极大减少数据同步系统与Gbase8a的网络交互次数,并提升整体吞吐量。如果该值设置过大,会导致数据同步运行进程OOM异常。 | 否 | 1,024 |
脚本开发介绍
使用脚本模式开发的详情请参见通过脚本模式配置离线同步任务。
向Gbase8a写入数据的JSON配置,如下所示。
{
"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"//限流
}
},
"order":{
"hops":[
{
"from":"Reader",
"to":"Writer"
}
]
}
}