本文为您介绍GDB Writer支持的数据类型、字段映射和数据源等参数及配置示例。
说明
- GDB Writer仅支持使用独享数据集成资源组,不支持使用默认资源组和自定义资源组。
- 开始配置GDB Writer插件前,请首先配置好数据源,详情请参见配置Graph Database数据源。
- 由于点和边的数据集成任务的配置不同,请您分别配置点和边的数据集成任务。
使用须知
- 必须先运行点的同步任务,运行成功后,才可以运行边的同步任务。
- 点有以下约束规则:
- 点必须具备类型名(即点名称,对应label)。
- 点的主键ID为必选,必须保证在点范围内唯一,且类型必须是string(如果不是string类型,GDB Writer插件会强制转换)。
- 请谨慎选择点的主键映射规则idTransRule。如果选择None,需要保证点的ID在全局点的范围内唯一。
- 边有以下约束规则:
- 边必须具备类型名(即边名称,对应label)。
- 边的主键ID为可选:
- 如果填写,则需要保证在全局边范围内唯一。
- 如果不填写,则GDB服务端默认生成一个UUID,类型必须是string(如果不是string类型,GDB Writer插件会强制转换)。
- 请谨慎选择边的主键映射规则idTransRule。如果选择None,需要保证边的ID在全局点边的范围内唯一。
- 边必须选择srcIdTransRule和dstIdTransRule,且必须和导入点时选择的idTransRule一致。
- 示例的字段名或枚举值,如果没有特殊说明,均为大小写敏感。
- 目前GDB服务端仅支持UTF-8编码格式,要求来源数据均为UTF-8编码格式。
- 由于网络限制,运行数据集成任务时,只能使用独享资源模式。
参数说明
参数 | 描述 | 是否必选 | 默认值 |
---|---|---|---|
datasource | 数据源名称,脚本模式支持添加数据源,此配置项填写的内容必须与添加的数据源名称保持一致。 | 是 | 无 |
labelType | 写入数据的类型:
|
是 | 无 |
writeMode | 导入ID重复时的处理模式:
|
是 | INSERT |
label | 类型名,即点或边名称。
label支持从源列中读取,例如 |
是 | 无 |
srcLabel | 表示起点的点名称:
|
否 | 无 |
dstLabel | 表示终点的点名称:
|
否 | 无 |
idTransRule | 主键ID的转换规则:
|
是 | none |
srcIdTransRule | 当写入边类型时,表示起点主键ID的转换规则:
|
写入边类型时必选 | none |
dstIdTransRule | 当写入边类型时,表示终点主键ID的转换规则:
|
写入边类型时必选 | none |
column::name | 点或边字段映射关系配置name字段。
点或边的字段名,当映射关系为属性时表示属性名。 |
是 | 无 |
column::type | 点或边字段映射关系配置type字段。
点或边字段映射值的类型:
|
是 | 无 |
column::value | 点或边字段映射关系配置value字段。
点或边字段映射的值,仅字符串类型的值支持自定义拼接:
|
是 | 无 |
column::columnType | 点或边字段映射关系配置columnType字段。
点或边字段映射字段的分类,支持以下枚举值:
|
是 | 无 |
properties示例如下:
{"properties":[
{"k":"name","t":"string","v":"tom"},
{"k":"age","t":"int","v":"20"},
{"k":"sex","t":"string","v":"male"}
]}
向导开发介绍
暂不支持向导模式开发。
脚本开发介绍
配置一个写入GDB的数据同步作业,通过脚本模式开发请参见脚本模式配置任务。
- 点配置示例
{ "order":{ "hops":[ { "from":"Reader", "to":"Writer" } ] }, "setting":{ "errorLimit":{ "record":"100" //错误记录数,表示脏数据最大容忍条数。 }, "jvmOption":"", "speed":{ "concurrent":8,// 并发线程数 "throttle":false } }, "steps":[ { "category":"reader", "name":"Reader", "parameter":{ "column":[ "*" ], "datasource":"_ODPS", "emptyAsNull":true, "guid":"", "isCompress":false, "partition":[], "table":"" }, "stepType":"odps" }, { "category":"writer", "name":"Writer", "parameter": { "datasource": "testGDB", //数据源名称。 "label": "person", //label名,即点名称。 "srcLabel": "", //点类型时此字段无需关注。 "dstLabel": "", //点类型时此字段无需关注。 "labelType": "VERTEX", //label类型,"VERTEX"表示点。 "writeMode": "INSERT", //导入ID重复时处理方式。 "idTransRule": "labelPrefix", //点的主键转换规则。 "srcIdTransRule": "none", //点类型时此字段无需关注。 "dstIdTransRule": "none", //点类型时此字段无需关注。 "maxConnectionPoolSize": 8, //该值配置大于等于concurrent,取值在8、16、32... "column": [ { "name": "id", //字段名。 "value": "#{0}", //#{0}表示取源端第1个字段值,支持拼接,0是源端column索引号。 "type": "string", //字段类型。 "columnType": "primaryKey" //字段分类,primaryKey表示是主键。 }, //点的主键,字段名必须是ID且类型是string,该记录必须存在。 { "name": "person_age", "value": "#{1}", //#{1}表示取源端第2个字段值,同上支持拼接。 "type": "int", "columnType": "vertexProperty" //字段分类,vertexProperty表示是点的属性。 }, //点的属性,支持int、long、float、double、boolean和string类型。 { "name": "person_credit", "value": "#{2}", //#{2}表示取源端第3个字段值,同上支持拼接。 "type": "string", "columnType": "vertexProperty" }, //点的属性。 ] } "stepType":"gdb" } ], "type":"job", "version":"2.0" }
- 边配置示例
{ "order":{ "hops":[ { "from":"Reader", "to":"Writer" } ] }, "setting":{ "errorLimit":{ "record":"100" //错误记录数,表示脏数据的最大容忍条数。 }, "jvmOption":"", "speed":{ "concurrent":8, "throttle":false } }, "steps":[ { "category":"reader", "name":"Reader", "parameter":{ "column":[ "*" ], "datasource":"_ODPS", "emptyAsNull":true, "guid":"", "isCompress":false, "partition":[], "table":"" }, "stepType":"odps" }, { "category":"writer", "name":"Writer", "parameter": { "datasource": "testGDB", //数据源名称。 "label": "use", //label名,即边名称。 "labelType": "EDGE", //label类型,EDGE表示边。 "srcLabel": "person", //起点的点名称。 "dstLabel": "software", //终点的点名称。 "writeMode": "INSERT", //导入ID重复时的处理方式。 "idTransRule": "labelPrefix", //边的主键转换规则。 "srcIdTransRule": "labelPrefix", //起点的主键转换规则。 "dstIdTransRule": "labelPrefix", //终点的主键转换规则。 "maxConnectionPoolSize": 8, //该值配置大于等于concurrent,取值在 8、16、32... "column": [ { "name": "id", //字段名。 "value": "#{0}", //#{0}表示取源端第1个字段值,支持拼接。 "type": "string", //字段类型。 "columnType": "primaryKey" //字段分类,primaryKey表示该字段是主键。 }, //边的主键,字段名必须是ID且类型是string,该记录选填。 { "name": "id", "value": "#{1}", //支持拼接,注意映射规则要与录入点时一致。 "type": "string", "columnType": "srcPrimaryKey" //字段分类,srcPrimaryKey表示是起点主键。 }, //起点的主键,字段名必须是ID且类型是string,该记录必须存在。 { "name": "id", "value": "#{2}", //支持拼接,注意映射规则要与录入点时一致。 "type": "string", "columnType": "dstPrimaryKey" //字段分类,dstPrimaryKey表示是终点主键。 }, //终点的主键,字段名必须是ID且类型是string,该记录必须存在。 { "name": "person_use_software_time", "value": "#{3}", //支持拼接。 "type": "long", "columnType": "edgeProperty" //字段分类,edgeProperty表示边的属性。 }, //边的属性,支持int、long、float、double、boolean和string类型。 { "name": "person_regist_software_name", "value": "#{4}", //支持拼接。 "type": "string", "columnType": "edgeProperty" }, //边属性 { "name": "id", "value": "#{5}", //支持拼接。 "type": "long", "columnType": "edgeProperty" }, //边的属性,字段名是ID。与主键ID不同,该字段为普通属性,可选。 ] } "stepType":"gdb" } ], "type":"job", "version":"2.0" }
说明
GDB需要升级到1.0.20或更高版本才支持SET属性,使用SET属性时请确认实例版本。