Graph Database數據源為您提供讀取和寫入Graph Database雙向通道的功能,本文為您介紹DataWorks的Graph Database數據同步的能力支持情況。
使用限制
離線讀 | 離線寫 |
|
|
創建數據源
在進行數據同步任務開發時,您需要在DataWorks上創建一個對應的數據源,操作流程請參見創建并管理數據源,詳細的配置參數解釋可在配置界面查看對應參數的文案提示。
數據同步任務開發
數據同步任務的配置入口和通用配置流程可參見下文的配置指導。
單表離線同步任務配置指導
操作流程請參見通過向導模式配置離線同步任務、通過腳本模式配置離線同步任務。
腳本模式配置的全量參數和腳本Demo請參見下文的附錄:腳本Demo與參數說明。
附錄:腳本Demo與參數說明
離線任務腳本配置方式
如果您配置離線任務時使用腳本模式的方式進行配置,您需要按照統一的腳本格式要求,在任務腳本中編寫相應的參數,詳情請參見通過腳本模式配置離線同步任務,以下為您介紹腳本模式下數據源的參數配置詳情。
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"http://限流,此處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"http://限流,此處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"http://限流,此處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"http://限流,此處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示例
| 是 | 無 |