本文為您介紹GDB Writer支持的數據類型、字段映射和數據源等參數及配置示例。
說明
- GDB Writer僅支持使用獨享數據集成資源組,不支持使用默認資源組和自定義資源組。
- 開始配置GDB Writer插件前,請首先配置好數據源,詳情請參見配置Graph Database數據源。
- 由于點和邊的數據集成任務的配置不同,請您分別配置點和邊的數據集成任務。
使用須知
- 必須先運行點的同步任務,運行成功后,才可以運行邊的同步任務。
- 點有以下約束規則:
- 點必須具備類型名(即點名稱,對應label)。
- 點的主鍵ID為必選,必須保證在點范圍內唯一,且類型必須是string(如果不是string類型,GDB Writer插件會強制轉換)。
- 請謹慎選擇點的主鍵映射規則idTransRule。如果選擇None,需要保證點的ID在全局點的范圍內唯一。
- 邊有以下約束規則:
- 邊必須具備類型名(即邊名稱,對應label)。
- 邊的主鍵ID為可選:
- 如果填寫,則需要保證在全局邊范圍內唯一。
- 如果不填寫,則GDB服務端默認生成一個UUID,類型必須是string(如果不是string類型,GDB Writer插件會強制轉換)。
- 請謹慎選擇邊的主鍵映射規則idTransRule。如果選擇None,需要保證邊的ID在全局點邊的范圍內唯一。
- 邊必須選擇srcIdTransRule和dstIdTransRule,且必須和導入點時選擇的idTransRule一致。
- 示例的字段名或枚舉值,如果沒有特殊說明,均為大小寫敏感。
- 目前GDB服務端僅支持UTF-8編碼格式,要求來源數據均為UTF-8編碼格式。
- 由于網絡限制,運行數據集成任務時,只能使用獨享資源模式。
參數說明
參數 | 描述 | 是否必選 | 默認值 |
---|---|---|---|
datasource | 數據源名稱,腳本模式支持添加數據源,此配置項填寫的內容必須與添加的數據源名稱保持一致。 | 是 | 無 |
labelType | 寫入數據的類型:
|
是 | 無 |
writeMode | 導入ID重復時的處理模式:
|
是 | INSERT |
label | 類型名,即點或邊名稱。
label支持從源列中讀取,例如 |
是 | 無 |
srcLabel | 表示起點的點名稱:
|
否 | 無 |
dstLabel | 表示終點的點名稱:
|
否 | 無 |
idTransRule | 主鍵ID的轉換規則:
|
是 | none |
srcIdTransRule | 當寫入邊類型時,表示起點主鍵ID的轉換規則:
|
寫入邊類型時必選 | none |
dstIdTransRule | 當寫入邊類型時,表示終點主鍵ID的轉換規則:
|
寫入邊類型時必選 | none |
column::name | 點或邊字段映射關系配置name字段。
點或邊的字段名,當映射關系為屬性時表示屬性名。 |
是 | 無 |
column::type | 點或邊字段映射關系配置type字段。
點或邊字段映射值的類型:
|
是 | 無 |
column::value | 點或邊字段映射關系配置value字段。
點或邊字段映射的值,僅字符串類型的值支持自定義拼接:
|
是 | 無 |
column::columnType | 點或邊字段映射關系配置columnType字段。
點或邊字段映射字段的分類,支持以下枚舉值:
|
是 | 無 |
properties示例如下:
{"properties":[
{"k":"name","t":"string","v":"tom"},
{"k":"age","t":"int","v":"20"},
{"k":"sex","t":"string","v":"male"}
]}
向導開發介紹
暫不支持向導模式開發。
腳本開發介紹
配置一個寫入GDB的數據同步作業,通過腳本模式開發請參見腳本模式配置任務。
- 點配置示例
{ "order":{ "hops":[ { "from":"Reader", "to":"Writer" } ] }, "setting":{ "errorLimit":{ "record":"100" //錯誤記錄數,表示臟數據最大容忍條數。 }, "jvmOption":"", "speed":{ "concurrent":8,// 并發線程數 "throttle":false } }, "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", //點類型時此字段無需關注。 "maxConnectionPoolSize": 8, //該值配置大于等于concurrent,取值在8、16、32... "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":{ "concurrent":8, "throttle":false } }, "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", //終點的主鍵轉換規則。 "maxConnectionPoolSize": 8, //該值配置大于等于concurrent,取值在 8、16、32... "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" }
說明
GDB需要升級到1.0.20或更高版本才支持SET屬性,使用SET屬性時請確認實例版本。