# DataX EZooDBWriter
# 1 快速介绍
EZooDBWriter插件实现了写入数据到EZooDB实例的功能。EZooDBWriter通过java sdk
连接远程EZooDB实例,获取Reader的数据,将数据写入到EZooDB。
# 2 实现原理
EZooDBWriter通过DataX框架获取Reader生成的协议数据,使用API接口写入数据到EZooDB实例。
# 3 功能说明
因为EZooDB中点和边的配置不同,导入时需要区分点和边的配置。
# 3.1 点配置样例
- 这里是一份从内存生成点数据导入EZooDB实例的配置
{
"job": {
"setting": {
"speed": {
"channel": 1
}
},
"content": [
{
"reader": {
"name": "streamreader",
"parameter": {
"column" : [
{
"random": "1,100",
"type": "double"
},
{
"random": "1000,1200",
"type": "long"
}
],
"sliceRecordCount": 1000
}
},
"writer": {
"name": "EZooDBwriter",
"parameter": {
"uris": "ezoodb://ezoo:ezoo@localhost:9090",
"username": "ezoo",
"password": "ezoo",
"writeMode": "INSERT",
"labelType": "NODE",
"label": "node1",
"maxRecordsInBatch": 64,
"column": [
{
"name": "id",
"value": "#{0}",
"type": "string",
"columnType": "uniqueKey"
},
{
"name": "node_propKey",
"value": "#{1}",
"type": "string",
"columnType": "nodeProperty"
}
]
}
}
}
]
}
}
# 3.2 边配置样例
- 这里是一份从内存生成边数据导入EZooDB实例的配置
注意 下面配置导入边时,需要提前在EZooDB实例中写入点,要求分别存在unique index为
node1
和node2
的点。
{
"job": {
"setting": {
"speed": {
"channel": 1
}
},
"content": [
{
"reader": {
"name": "streamreader",
"parameter": {
"column" : [
{
"random": "100,200",
"type": "double"
},
{
"random": "1,100",
"type": "string"
},
{
"random": "1,100",
"type": "string"
},
{
"random": "2000,2200",
"type": "long"
}
],
"sliceRecordCount": 1000
}
},
"writer": {
"name": "EZooDBwriter",
"parameter": {
"uris": "ezoodb://ezoo:ezoo@localhost:9090",
"username": "ezoo",
"password": "ezoo",
"writeMode": "INSERT",
"labelType": "EDGE",
"label": "edge1",
"srcLabel":"node1",
"dstLabel":"node2",
"column": [
{
"name": "id",
"value": "#{0}",
"type": "string",
"columnType": "uniqueKey"
},
{
"name": "id",
"value": "#{1}",
"type": "string",
"columnType": "srcUniqueKey"
},
{
"name": "id",
"value": "#{2}",
"type": "string",
"columnType": "dstUniqueKey"
},
{
"name": "edge_propKey",
"value": "#{3}",
"type": "string",
"columnType": "edgeProperty"
}
]
}
}
}
]
}
}
# 3.3 参数说明
uris
- 描述:EZooDB实例连接域名,对应EZooDB部署的ip和端口;
- 必选:是
- 默认值:无
username
- 描述:EZooDB实例账号名
- 必选:是
- 默认值:无
password
- 描述:图实例账号名对应密码
- 必选:是
- 默认值:无
label
- 描述:类型名,即点/边名称; label支持从源列中读取,如#{0},表示取第一列字段作为label名。源列索引从0开始;
- 必选:是
- 默认值:无
labelType
- 描述:label类型;
- 枚举值"NODE"表示点
- 枚举值"EDGE"表示边
- 必选:是
- 默认值:无
- 描述:label类型;
srcLabel
- 描述:当label为边时,表示起点的点名称;srcLabel支持从源列中读取,如#{0},表示取第一列字段作为label名。源列索引从0开始;
- 必选:labelType为边,必填;
- 默认值:无
dstLabel
- 描述:当label为边时,表示终点的点名称;dstLabel支持从源列中读取,如#{0},表示取第一列字段作为label名。源列索引从0开始;
- 必选:labelType为边,必填;
- 默认值:无
writeMode
- 描述:导入id重复时的处理模式;
- 枚举值"INSERT"表示新增,会报错,错误记录数加1;
- 枚举值"MERGE"表示更新属性值,不计入错误;
- 枚举值"SKIP"表示跳过,不计入错误;
- 枚举值"IMPORT_DATA"表示批量导入,会报错,错路记录数加1,该模式与
INSERT
的区别是,支持更大批次的合并导入; - 枚举值"INCR"表示增量同步,支持数据的增删改,会报错,错路记录数加1
- 必选:是
- 默认值:INSERT
- 描述:导入id重复时的处理模式;
maxRecordsInBatch
- 描述:一次处理的记录数
- 必选:否
- 默认值:16
transaction
- 描述:事务级别:
- 枚举值"BATCH"表示:默认,每一次插入一个事务
- 枚举值"TASK"表示:每一个任务一个事务
- 枚举值"JOB"表示:每一个作业一个事务
- 枚举值"JOB_GROUP"表示:每一批作业一个事务,配合
jobGroup
和jobOrder
使用,当设置为这个级别的事务时,请保证每个作业的执行顺序。
- 必选:否
- 默认值:none
- 描述:事务级别:
jobGroup
- 描述:事务级别设置为
jobGroup
时必填,保证每个作业组唯一 - 必选:否
- 默认值:无
- 描述:事务级别设置为
jobOrder
- 描述:事务级别设置为
jobGroup
时必填,作业顺序:- 枚举值"FIRST"表示:第一个执行的作业
- 枚举值"MID"表示:中间执行的作业
- 枚举值"LAST"表示:最后执行的作业
- 必选:否
- 默认值:无
- 描述:事务级别设置为
column
- 描述:点/边字段映射关系配置
- 必选:是
- 默认值:无
column -> name
- 描述:点/边映射关系的字段名
- 必选:是
- 默认值:无
column -> value
- 描述:点/边映射关系的字段值;
- #{N}表示直接映射源端值,N为源端column索引,从0开始;#{0}表示映射源端column第1个字段;
- #{0}-#{1}表示做多字段拼接
- 必选:是
- 默认值:无
- 描述:点/边映射关系的字段值;
column -> type
- 描述:点/边映射关系的字段值类型;
- 属性支持类型:int, float, double, boolean, string
- 必选:是
- 默认值:无
- 描述:点/边映射关系的字段值类型;
column -> columnType
- 描述:点/边映射关系字段对应到EZooDB点/边数据的类型,支持以下几类枚举值:
- 公共枚举值:
- uniqueKey:表示该字段是唯一索引,唯一索引支持联合唯一索引。当唯一索引为联合唯一索引时,请在组成该联合唯一索引的所有列上指定其为uniqueKey
- CUDModeProperty:表示该条记录的插入方式(增,删,改),只在
writeMode
INCR
模式下生效
- 点枚举值:
- nodeProperty:labelType为点时,表示该字段是点的普通属性
- 边枚举值:
- srcUniqueKey:labelType为边时,表示该字段是起点唯一索引
- dstUniqueKey:labelType为边时,表示该字段是终点唯一索引
- edgeProperty:labelType为边时,表示该字段是边的普通属性
- 公共枚举值:
- 必选:是
- 默认值:无
- 描述:点/边映射关系字段对应到EZooDB点/边数据的类型,支持以下几类枚举值:
column -> columnEnum
- 描述:点/边增删改枚举值,配合
columnType
CUDModeProperty
使用;- 属性支持类型:string
- 属性填写方式:以增删改的顺序填写,英文逗号分割
- 必选:否
- 默认值:无
- 示例:源数据0表示新增,1表示更新,-1表示删除,则写为 "CUDModeProperty": "0,1,-1"
- 描述:点/边增删改枚举值,配合
# 4 约束限制
- 导入边记录前要求EZooDB中已经存在边关联的起点/终点
- EZooDBWriter插件与用户查询EZooDB使用相同的EZooDB实例端口,导入时可能会影响查询性能
← eZoo-Client 图管理接口 →