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

图数据库(Graph Database,简称GDB)是一种支持属性图模型,用于处理高度连接数据查询与存储的实时可靠的在线数据库,支持TinkerPop Gremlin查询语言,可以帮您快速构建基于高度连接的数据集的应用程序。

说明

使用限制

  • 需要分开配置点任务和边任务来导出GDB的点数据和边数据。
  • 导出任务按点或边的类型名(即名称,对应label)遍历数据,因此您需要正确提供待导出数据的类型名。
  • GDB中点和边的主键ID字段是字符串类型,导出应该配置成string类型,如果配置long等数值类型,插件会转换成配置的目标类型,但转换失败时会丢失该记录。
  • GDB导出的属性值需要配置成存储类型,如果存储类型与配置类型不一致,插件会转换成目标类型,但可能会转换失败导致该记录丢失。
  • 导出点SET属性的一个值时,不能保证多次导出都是同一个值。
  • 导出所有属性使用JSON格式输出时,只包含一个属性值的SET属性会被当成普通属性输出。
  • 示例的字段名或枚举值,如果没有特殊说明,均为大小写敏感。
  • 目前GDB服务端仅支持UTF-8编码格式,导出的数据均为UTF-8编码格式。
  • 由于网络限制,运行数据集成任务时,只能使用独享资源模式

参数说明

参数 描述 是否必选 默认值
datasource 数据源名称,脚本模式支持添加数据源,此配置项填写的内容必须与添加的数据源名称保持一致。
labelType 写入数据的类型
  • 枚举值VERTEX表示点
  • 枚举值EDGE表示边
labels 类型名,即点/边名称;支持读取多个名称数据,用数组表示
column::name 点/边映射关系配置 name 字段

读取属性时必选,提供属性名

column::type 点/边映射关系配置 type 字段
  • 主键ID、类型名label在GDB中都是string类型,配置非string类型时可能会转换失败
  • 普通属性支持类型:int, long, float, double, boolean, string
  • GDB Reader尽量将读取到的数据转换成配置要求的类型,但转换失败会导致该条记录错误
column::columnType 点/边字段映射关系配置 columnType 字段
点/边字段映射字段的分类,支持以下枚举值
  • primaryKey 表示该字段映射主键ID
  • primaryLabel 表示该字段映射点/边名称
  • vertexProperty 导出类型为点时可选,表示该字段是点的属性
  • vertexJsonProperty 导出类型为点时可选,表示该字段是点的属性集合,用JSON格式封装。当配置该类型时,所有属性都会打包到该列,column里面不能再包含其他属性类型
  • srcPrimaryKey 导出类型为边时可选,表示该字段是起点主键ID
  • dstPrimaryKey 导出类型为边时可选,表示该字段是终点主键ID
  • srcPrimaryLabel 导出类型为边时可选,表示该字段是起点的类型名称label
  • dstPrimaryLabel 导出类型为边时可选,表示该字段是终点的类型名称label
  • edgeProperty 导出类型为边时可选,表示该字段是边的属性
  • edgeJsonProperty 导出类型为边时可选,表示该字段是边的属性集合,用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"}
]}
edgeJsonProperty格式
{"properties":[
   {"k":"name","t":"string","v":"tom"},
   {"k":"sex","t":"string","v":"male"}
]}
说明
  • 边不支持多值属性,封装成JSON格式时,没有c字段
  • 如果点的多值属性只包含一个属性值时,导出会被当成单值属性处理

向导开发介绍

暂不支持向导模式开发

脚本开发介绍

配置一个导出GDB的数据同步作业,通过脚本模式开发的详情请参见通过脚本模式配置任务

  • 点配置示例
    {
        "order":{
            "hops":[
                {
                    "from":"Reader",
                    "to":"Writer"
                }
            ]
        },
        "setting":{
            "errorLimit":{
                "record":"100"  //错误记录数,表示脏数据最大容忍条数。
            },
            "jvmOption":"",
            "speed":{
                "concurrent":3,
                "throttle":false
            }
        },
        "steps":[
            {
                "category":"reader",
                "name":"Reader",
                "parameter":{ 
                    "datasource": "testGDB", //数据源名称。
                    "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":false,          //是否向屏幕打印输出。
                    "fieldDelimiter":","    //列分隔符。
                }
                "stepType":"stream"
            }
        ]
        "type":"job",
        "version":"2.0"
    }
    
  • 边配置示例
    {
        "order":{
            "hops":[
                {
                    "from":"Reader",
                    "to":"Writer"
                }
            ]
        },
        "setting":{
            "errorLimit":{
                "record":"100"  //错误记录数,表示脏数据最大容忍条数。
            },
            "jvmOption":"",
            "speed":{
                "concurrent":3,
                "throttle":false
            }
        },
        "steps":[
            {
                "category":"reader",
                "name":"Reader",
                "parameter":{ 
                    "datasource": "testGDB", //数据源名称
                    "labelType": "EDGE", // label类型,"EDGE"表示点
                    "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":false,          //是否向屏幕打印输出。
                    "fieldDelimiter":","    //列分隔符。
                }
                "stepType":"stream"
            }
        ]
        "type":"job",
        "version":"2.0"
    }
说明

GDB需要升级到1.0.20或更高版本才支持SET属性,使用SET属性时请确认实例版本