本文為您介紹GDB Reader支持的數據類型、字段映射和數據源等參數及配置示例。

說明

使用須知

  • 需要分開配置點任務和邊任務來導出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": "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":false,          //是否向屏幕打印輸出。
                    "fieldDelimiter":","    //列分隔符。
                }
                "stepType":"stream"
            }
        ]
        "type":"job",
        "version":"2.0"
    }
說明 GDB需要升級到1.0.20或更高版本才支持SET屬性,使用SET屬性時請確認實例版本。