Graph Database数据源为您提供读取和写入Graph Database双向通道的功能,本文为您介绍DataWorks的Graph Database数据同步的能力支持情况。
使用限制
离线读 | 离线写 |
|
|
数据同步任务开发
GDB数据同步任务的配置入口和通用配置流程指导可参见下文的配置指导,详细的配置参数解释可在配置界面查看对应参数的文案提示。
创建数据源
在进行数据同步任务开发时,您需要在DataWorks上创建一个对应的数据源,操作流程请参见创建与管理数据源。
单表离线同步任务配置指导
操作流程请参见通过向导模式配置离线同步任务、通过脚本模式配置离线同步任务。
脚本模式配置的全量参数和脚本Demo请参见下文的附录:脚本Demo与参数说明。
附录:脚本Demo与参数说明
附录:离线任务脚本配置方式
如果您配置离线任务时使用脚本模式的方式进行配置,您需要在任务脚本中按照脚本的统一格式要求编写脚本中的reader参数和writer参数,脚本模式的统一要求请参见通过脚本模式配置离线同步任务,以下为您介绍脚本模式下的数据源的Reader参数和Writer参数的指导详情。
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示例
| 是 | 无 |