本文为您介绍GDB(Graph Database) Reader支持的数据类型、字段映射和数据源等参数及配置示例。

背景信息

图数据库GDB(Graph Database)支持Property Graph图模型,是一种用于处理高度连接数据查询与存储的实时、可靠的在线数据库服务。GDB支持Apache TinkerPop Gremlin查询语言,可以帮您快速构建基于高度连接的数据集的应用程序。
说明
  • 开始配置GDB Reader插件前,请首先配置好数据源,详情请参见配置GDB数据源
  • 由于点和边的数据集成任务的配置不同,请您分别进行配置。

使用限制

  • 导出GDB需要配置点任务和边任务,分别导出点数据和边数据。
  • 导出任务根据点或边的类型名称遍历数据,您需要确保待导出数据的类型名称。
  • GDB中点和边的主键ID字段是字符串类型,请配置导出为STRING类型。如果配置LONG等数值类型,GDB Reader会转换为配置的目标类型,但转换失败时会丢失该记录。
  • 您需要配置GDB导出的属性值为存储类型。如果存储类型和配置类型不一致,GDB Reader会转换为目标类型,但可能会转换失败导致该记录丢失。
  • 导出点SET属性的一个值时,不能保证多次导出都是同一个值。
  • 导出所有属性使用JSON格式输出时,仅包含一个属性值的SET属性会被作为普通属性输出。
  • 如果未对示例的字段名或枚举值进行特别说明,请注意大小写敏感。
  • GDB服务端仅支持UTF-8编码格式,导出的数据均为UTF-8编码格式。
  • GDB需要升级至1.0.20或更高版本才支持SET属性。使用SET属性时,请确认实例的版本。

参数说明

参数 描述 是否必选 默认值
host GDB实例的连接域名。您可以在图数据库GDB控制台,单击相应实例后的管理,查看内网地址(即host)。
port GDB实例的连接端口。 8182
username GDB实例的账号名。
password GDB实例账号的密码。
labels 类型名,即点或边的名称。支持读取多个名称的数据,使用数组表示,例如["label1", "label2"]。
labelType 数据的Label类型:
  • 枚举值VERTEX表示点。
  • 枚举值EDGE表示边。
column 点或边的字段映射关系配置。
column -> name 点或边的映射关系的字段名。读取属性时必选,请提供属性名。
column -> type 点或边的映射关系的字段值类型:
  • 主键ID、类型名Label在GDB中均为STRING类型。如果您配置为STRING类型,会转换失败。
  • 普通属性支持INT、LONG、FLOAT、DOUBLE、BOOLEAN和STRING等类型。
  • GDB Reader会尽量转换读取的数据为配置要求的类型,但转换失败会导致该条记录错误。
column -> columnType GDB点或边数据对应到的点或边的映射关系字段,包括以下枚举值:
  • 公共枚举值:
    • primaryKey:表示该字段为主键ID。
    • primaryLabel:表示该字段为名称Label。
  • 点枚举值:
    • vertexProperty:当labelType为点时,表示该字段为点的属性。
    • vertexJsonProperty:当labelType为点时,表示该字段为点的属性的集合,使用JSON格式封装。当配置该类型时,所有属性会打包至该列,column中不能再包含其它属性的类型。
      vertexJsonProperty格式如下。
      {
          "properties":[
              {"k":"name","t":"string","v":"tom","c":"set"},
              {"k":"name","t":"string","v":"jack","c":"set"},
              {"k":"sex","t":"string","v":"male","c":"single"}
          ]
      }
                                                          

      上述导出的属性包含多值属性name,有两个属性值和一个单值属性。如果GDB中的多值属性仅包含一个属性值,导出会被当作单值属性。

  • labelType为边时的边枚举值:
    • srcPrimaryKey:表示该字段为起点主键ID。
    • padstPrimaryKey:表示该字段为终点主键ID。
    • srcPrimaryLabel:表示该字段为起点名称Label。
    • dstPrimaryLabel:表示该字段为终点名称Label。
    • edgeProperty:表示该字段为边的属性。
    • edgeJsonProperty:表示该字段为边的属性集合,使用JSON格式封装。配置该类型时,所有属性均会打包至该列,column中不能再包含其它属性的类型。
      edgeJsonProperty格式如下。
      {
          "properties":[
              {"k":"name","t":"string","v":"tom"},
              {"k":"sex","t":"string","v":"male"}
      ]
      }
                                                          

      边不支持多值属性,无c字段。

向导开发介绍

暂不支持向导模式开发。

脚本开发介绍

使用脚本模式开发的详情请参见通过脚本模式配置任务

配置写入GDB的数据同步作业时,请分别配置点和边,详情请参见参数说明
  • 点配置示例
    {
        "order":{
            "hops":[
                {
                    "from":"Reader",
                    "to":"Writer"
                }
            ]
        },
        "setting":{
            "errorLimit":{
                "record":"100"  //错误记录数,表示脏数据的最大容忍条数。
            },
            "jvmOption":"",
            "speed":{
                "concurrent":3,
                "throttle":true,///当throttle值为flase时,mbps参数不生效,表示不限流;当throttle值为true时,表示限流。
                "mbps":"12"//限流
            }
        },
        "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值为flase时,mbps参数不生效,表示不限流;当throttle值为true时,表示限流。
                "mbps":"12"//限流
            }
        },
        "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": "srcPrimaryKey"       // 字段分类,表示边关联点中终点的ID,GDB中是STRING类型。
                        },
                        {
                            "name": "dstLabel",                 // 字段名。
                            "type": "string",                   // 字段类型。
                            "columnType": "srcPrimaryLabel"     // 字段分类,表示边关联点中终点的Label名,GDB中是STRING类型。
                        },
                        {
                            "name": "weight",               // 属性字段名。
                            "type": "double",               // 属性字段类型。
                            "columnType": "edgeProperty"    // 字段分类,表示边的属性。
                        }
                    ]
                },
                "stepType":"gdb"
            },
            {
                "category":"writer",
                "name":"Writer",
                "parameter":{
                    "print": true
                },
                "stepType":"stream"
            }
        ]
    }