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"//限流,此處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"//限流,此處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"//限流,此處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"//限流,此處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樣本 | 是 | 無 |