Graph Database数据源为您提供读取和写入Graph Database双向通道的功能,本文为您介绍DataWorks的Graph Database数据同步的能力支持情况。
使用限制
离线读 | 离线写 |
|
|
创建数据源
在进行数据同步任务开发时,您需要在DataWorks上创建一个对应的数据源,操作流程请参见创建并管理数据源,详细的配置参数解释可在配置界面查看对应参数的文案提示。
数据同步任务开发
数据同步任务的配置入口和通用配置流程可参见下文的配置指导。
单表离线同步任务配置指导
操作流程请参见通过向导模式配置离线同步任务、通过脚本模式配置离线同步任务。
脚本模式配置的全量参数和脚本Demo请参见下文的附录:脚本Demo与参数说明。
附录:脚本Demo与参数说明
离线任务脚本配置方式
如果您配置离线任务时使用脚本模式的方式进行配置,您需要按照统一的脚本格式要求,在任务脚本中编写相应的参数,详情请参见通过脚本模式配置离线同步任务,以下为您介绍脚本模式下数据源的参数配置详情。
Reader脚本Demo
配置写入GDB的数据同步作业时,请分别配置点和边:
点配置示例
{ "order":{ "hops":[ { "from":"Reader", "to":"Writer" } ] }, "setting":{ "errorLimit":{ "record":"100" //错误记录数,表示脏数据的最大容忍条数。 }, "jvmOption":"", "speed":{ "concurrent":3, "throttle":true,///当throttle值为false时,mbps参数不生效,表示不限流;当throttle值为true时,表示限流。 "mbps":"12"//限流,此处1mbps = 1MB/s。 } }, "steps":[ { "category":"reader", "name":"Reader", "parameter":{ "host": "gdb-xxxxxx.aliyuncs.com", //GDB实例的连接地址。 "port": 8182, //GDB实例的连接端口。 "username": "gdb", //GDB实例的用户名。 "password": "gdb", //GDB实例用户名对应的密码。 "labelType": "VERTEX", // Label类型,使用VERTEX表示点。 "labels": ["label1", "label2"], // Label名的列表,为空表示导出所有的点。 "column": [ { "name": "id", // 字段名。 "type": "string", // 字段类型。 "columnType": "primaryKey" // 字段分类,表示点的主键ID,GDB中是STRING类型。 }, { "name": "label", // 字段名。 "type": "string", // 字段类型。 "columnType": "primaryLabel" // 字段分类,表示点的Label名,GDB中是STRING类型。 }, { "name": "age", // 属性字段名。 "type": "int", // 属性字段类型。 "columnType": "vertexProperty" // 字段分类,表示点的属性,GDB中基础类型属性。 } ] }, "stepType":"gdb" }, { "category":"writer", "name":"Writer", "parameter":{ "print": true }, "stepType":"stream" } ] }
边配置示例
{ "order":{ "hops":[ { "from":"Reader", "to":"Writer" } ] }, "setting":{ "errorLimit":{ "record":"100" //错误记录数,表示脏数据的最大容忍条数。 }, "jvmOption":"", "speed":{ "concurrent":3, "throttle":true,//当throttle值为false时,mbps参数不生效,表示不限流;当throttle值为true时,表示限流。 "mbps":"12"//限流,此处1mbps = 1MB/s。 } }, "steps":[ { "category":"reader", "name":"Reader", "parameter":{ "host": "gdb-xxxxxx.aliyuncs.com", //GDB实例的连接地址。 "port": 8182, //GDB实例的连接端口。 "username": "gdb", //GDB实例用户名。 "password": "gdb", //GDB实例用户名对应的密码。 "labelType": "EDGE", // Label类型,VERTEX表示点。 "labels": ["label1", "label2"], // Label名列表,为空表示导出所有的边。 "column": [ { "name": "id", // 字段名。 "type": "string", // 字段类型。 "columnType": "primaryKey" // 字段分类,表示边的主键ID,GDB中是STRING类型。 }, { "name": "label", // 字段名。 "type": "string", // 字段类型。 "columnType": "primaryLabel" // 字段分类,表示边的Label名,GDB中是STRING类型。 }, { "name": "srcId", // 字段名。 "type": "string", // 字段类型。 "columnType": "srcPrimaryKey" // 字段分类,表示边关联点中起点的ID,GDB中是STRING类型。 }, { "name": "srcLabel", // 字段名。 "type": "string", // 字段类型。 "columnType": "srcPrimaryLabel" // 字段分类,表示边关联点中起点的Label名,GDB中是STRING类型。 }, { "name": "dstId", // 字段名。 "type": "string", // 字段类型。 "columnType": "dstPrimaryKey" // 字段分类,表示边关联点中终点的ID,GDB中是STRING类型。 }, { "name": "dstLabel", // 字段名。 "type": "string", // 字段类型。 "columnType": "dstPrimaryLabel" // 字段分类,表示边关联点中终点的Label名,GDB中是STRING类型。 }, { "name": "weight", // 属性字段名。 "type": "double", // 属性字段类型。 "columnType": "edgeProperty" // 字段分类,表示边的属性。 } ] }, "stepType":"gdb" }, { "category":"writer", "name":"Writer", "parameter":{ "print": true }, "stepType":"stream" } ] }
Reader脚本参数
参数 | 描述 | 是否必选 | 默认值 |
host | GDB实例的连接域名。您可以在图数据库GDB控制台,单击相应实例后的管理,查看内网地址(即host)。 | 是 | 无 |
port | GDB实例的连接端口。 | 是 | 8182 |
username | GDB实例的账号名。 | 是 | 无 |
password | GDB实例账号的密码。 | 是 | 无 |
labels | 类型名,即点或边的名称。支持读取多个名称的数据,使用数组表示,例如["label1", "label2"]。 | 是 | 无 |
labelType | 数据的Label类型:
| 是 | 无 |
column | 点或边的字段映射关系配置。 | 是 | 无 |
column -> name | 点或边的映射关系的字段名。读取属性时必选,请提供属性名。 | 是 | 无 |
column -> type | 点或边的映射关系的字段值类型:
| 是 | 无 |
column -> columnType | GDB点或边数据对应到的点或边的映射关系字段,包括以下枚举值:
| 是 | 无 |
Writer脚本Demo
点配置示例
{ "order":{ "hops":[ { "from":"Reader", "to":"Writer" } ] }, "setting":{ "errorLimit":{ "record":"100" //错误记录数,表示脏数据最大容忍条数。 }, "speed":{ "throttle":true,//当throttle值为false时,mbps参数不生效,表示不限流;当throttle值为true时,表示限流。 "concurrent":3, //作业并发数。 "mbps":"12"//限流,此处1mbps = 1MB/s。 } }, "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"//限流,此处1mbps = 1MB/s。 } }, "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" }
Writer脚本参数
参数 | 描述 | 是否必选 | 默认值 |
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示例
| 是 | 无 |