本文为您介绍GDB Writer支持的数据类型、字段映射和数据源等参数及配置示例。
图数据库(Graph Database,简称GDB)是一种支持属性图模型,用于处理高度连接数据查询与存储的实时可靠的在线数据库,支持TinkerPop Gremlin查询语言,可以帮您快速构建基于高度连接的数据集的应用程序。
重要
- 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编码格式。
- 由于网络限制,运行数据集成任务时,只能使用独享数据集成资源组,请您提前购买并绑定GDB实例所在的专有网络(VPC)。
参数说明
参数 | 描述 | 是否必选 | 默认值 |
---|---|---|---|
datasource | 数据源名称,脚本模式支持添加数据源,此配置项填写的内容必须与添加的数据源名称保持一致。 | 是 | 无 |
label | 类型名,即点/边名称。
label支持从源列中读取,例如#{0},表示取第1列字段作为label名,源列索引从0开始。 |
是 | 无 |
labelType | label的类型:
|
是 | 无 |
srcLabel |
|
否 | 无 |
dstLabel |
|
否 | 无 |
writeMode | 导入ID重复时的处理模式。
|
是 | INSERT |
idTransRule | 主键ID的转换规则。
|
是 | none |
srcIdTransRule | 当label为边时,表示起点的主键ID转换规则。
|
label为边时必选 | none |
dstIdTransRule | 当label为边时,表示终点的主键ID转换规则。
|
label为边时必选 | none |
column | 点/边字段映射关系配置。
properties示例
|
是 | 无 |
脚本开发介绍
配置一个写入GDB的数据同步作业,通过脚本模式开发的详情请参见通过脚本模式配置离线同步任务:
- 点配置示例
{ "order":{ "hops":[ { "from":"Reader", "to":"Writer" } ] }, "setting":{ "errorLimit":{ "record":"100" //错误记录数,表示脏数据最大容忍条数。 }, "jvmOption":"", "speed":{ "throttle":true,//当throttle值为false时,mbps参数不生效,表示不限流;当throttle值为true时,表示限流。 "concurrent":3, //作业并发数。 "mbps":"12"//限流 } }, "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", // 点类型时此字段无需关注。 "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":{ "throttle":true,//当throttle值为false时,mbps参数不生效,表示不限流;当throttle值为true时,表示限流。 "concurrent":3, //作业并发数。 "mbps":"12"//限流 } }, "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", //终点的主键转换规则。 "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" }