DataWorksは、GDBデータソースとのデータの読み書きを行うためのGraph Database(GDB)ReaderとGDB Writerを提供しています。このトピックでは、GDBデータソースとのデータ同期機能について説明します。
制限事項
バッチデータ読み取り | バッチデータ書き込み |
|
|
データ同期タスクの開発
データ同期タスクのエントリポイントと設定手順については、以下のセクションを参照してください。パラメーター設定については、タスクの設定タブにある各パラメーターのinfotipを参照してください。
データソースの追加
特定のデータソースとのデータ同期タスクを設定する前に、DataWorksにデータソースを追加する必要があります。詳細については、「データソースの追加と管理」をご参照ください。
単一テーブルのデータを同期するためのバッチ同期タスクの設定
設定手順の詳細については、「コードレスUIを使用したバッチ同期タスクの設定」および「コードエディターを使用したバッチ同期タスクの設定」をご参照ください。
コードエディターを使用してバッチ同期タスクを設定する場合に設定されるすべてのパラメーターと実行されるコードについては、「付録:コードとパラメーター」をご参照ください。
付録:コードとパラメーター
付録:コードエディターを使用したバッチ同期タスクの設定
コードエディターを使用してバッチ同期タスクを設定する場合は、コードエディターの形式要件に基づいて、関連データソースのリーダーとライターのパラメーターを設定する必要があります。形式要件の詳細については、「コードエディターを使用したバッチ同期タスクの設定」をご参照ください。以下の情報は、コードエディターのリーダーとライターのパラメーターの設定詳細について説明しています。
GDB Readerのコード
次のコードでは、GDBインスタンスからデータを読み取るために2つの同期タスクが設定されています。
GDBインスタンスから頂点に関するデータを読み取る同期タスクを設定する
{ "order":{ "hops":[ { "from":"Reader", "to":"Writer" } ] }, "setting":{ "errorLimit":{ "record":"100" // 許容されるダーティデータレコードの最大数。 }, "jvmOption":"", "speed":{ "concurrent":3, "throttle":true,/// スロットリングを有効にするかどうかを指定します。値falseはスロットリングが無効であることを示し、値trueはスロットリングが有効であることを示します。mbpsパラメーターは、throttleパラメーターがtrueに設定されている場合にのみ有効になります。 "mbps":"12"// 最大伝送速度。単位:MB/s。 } }, "steps":[ { "category":"reader", "name":"Reader", "parameter":{ "host": "gdb-xxxxxx.aliyuncs.com", // GDBインスタンスに接続するために使用されるエンドポイント。 "port": 8182, // GDBインスタンスに接続するために使用されるポート番号。 "username": "gdb", // GDBインスタンスに接続するために使用されるユーザー名。 "password": "gdb", // GDBインスタンスに接続するために使用されるパスワード。 "labelType": "VERTEX", // ラベルのタイプ。値VERTEXは頂点を示します。 "labels": ["label1", "label2"], // 同期する頂点のラベル。このパラメーターを空のままにすると、すべての頂点が同期されます。 "column": [ { "name": "id", // 頂点プロパティの名前。 "type": "string", // 同期するデータを格納するためのデータ型。 "columnType": "primaryKey" // 頂点プロパティのカテゴリ。値primaryKeyは、同期されるデータが頂点のプライマリキーであり、GDBインスタンスではSTRING型であることを示します。 }, { "name": "label", // 頂点プロパティの名前。 "type": "string", // 同期するデータを格納するためのデータ型。 "columnType": "primaryLabel" // 頂点プロパティのカテゴリ。値primaryLabelは、同期されるデータが頂点のラベルであり、GDBインスタンスではSTRING型であることを示します。 }, { "name": "age", // 頂点プロパティの名前。 "type": "int", // 同期するデータを格納するためのデータ型。 "columnType": "vertexProperty" // 頂点プロパティのカテゴリ。値vertexPropertyは共通の頂点プロパティを示します。 } ] }, "stepType":"gdb" }, { "category":"writer", "name":"Writer", "parameter":{ "print": true }, "stepType":"stream" } ] }
GDBインスタンスからエッジに関するデータを読み取る同期タスクを設定する
{ "order":{ "hops":[ { "from":"Reader", "to":"Writer" } ] }, "setting":{ "errorLimit":{ "record":"100" // 許容されるダーティデータレコードの最大数。 }, "jvmOption":"", "speed":{ "concurrent":3, "throttle":true,// スロットリングを有効にするかどうかを指定します。値falseはスロットリングが無効であることを示し、値trueはスロットリングが有効であることを示します。mbpsパラメーターは、throttleパラメーターがtrueに設定されている場合にのみ有効になります。 "mbps":"12"// 最大伝送速度。単位:MB/s。 } }, "steps":[ { "category":"reader", "name":"Reader", "parameter":{ "host": "gdb-xxxxxx.aliyuncs.com", // GDBインスタンスに接続するために使用されるエンドポイント。 "port": 8182, // GDBインスタンスに接続するために使用されるポート番号。 "username": "gdb", // GDBインスタンスに接続するために使用されるユーザー名。 "password": "gdb", // GDBインスタンスに接続するために使用されるパスワード。 "labelType": "EDGE", // ラベルのタイプ。値EDGEはエッジを示します。 "labels": ["label1", "label2"], // 同期するエッジのラベル。このパラメーターを空のままにすると、すべてのエッジが同期されます。 "column": [ { "name": "id", // エッジプロパティの名前。 "type": "string", // 同期するデータを格納するためのデータ型。 "columnType": "primaryKey" // エッジプロパティのカテゴリ。値primaryKeyは、同期されるデータがエッジのプライマリキーであり、GDBインスタンスではSTRING型であることを示します。 }, { "name": "label", // エッジプロパティの名前。 "type": "string", // 同期するデータを格納するためのデータ型。 "columnType": "primaryLabel" // エッジプロパティのカテゴリ。値primaryLabelは、同期されるデータがエッジのラベルであり、GDBインスタンスではSTRING型であることを示します。 }, { "name": "srcId", // エッジプロパティの名前。 "type": "string", // 同期するデータを格納するためのデータ型。 "columnType": "srcPrimaryKey" // エッジプロパティのカテゴリ。値srcPrimaryKeyは、同期されるデータが始点頂点のプライマリキーであり、GDBインスタンスではSTRING型であることを示します。 }, { "name": "srcLabel", // エッジプロパティの名前。 "type": "string", // 同期するデータを格納するためのデータ型。 "columnType": "srcPrimaryLabel" // エッジプロパティのカテゴリ。値srcPrimaryLabelは、同期されるデータが始点頂点のラベルであり、GDBインスタンスではSTRING型であることを示します。 }, { "name": "dstId", // エッジプロパティの名前。 "type": "string", // 同期するデータを格納するためのデータ型。 "columnType": "dstPrimaryKey" // エッジプロパティのカテゴリ。値dstPrimaryKeyは、同期されるデータが終点頂点のプライマリキーであり、GDBインスタンスではSTRING型であることを示します。 }, { "name": "dstLabel", // エッジプロパティの名前。 "type": "string", // 同期するデータを格納するためのデータ型。 "columnType": "dstPrimaryLabel" // エッジプロパティのカテゴリ。値dstPrimaryLabelは、同期されるデータが終点頂点のラベルであり、GDBインスタンスではSTRING型であることを示します。 }, { "name": "weight", // エッジプロパティの名前。 "type": "double", // 同期するデータを格納するためのデータ型。 "columnType": "edgeProperty" // エッジプロパティのカテゴリ。値edgePropertyは共通のエッジプロパティを示します。 } ] }, "stepType":"gdb" }, { "category":"writer", "name":"Writer", "parameter":{ "print": true }, "stepType":"stream" } ] }
GDB Readerのコードのパラメーター
パラメーター | 説明 | 必須 | デフォルト値 |
host | GDBインスタンスに接続するために使用されるエンドポイント。GDB consoleにログインし、設定するインスタンスを見つけ、[アクション] 列の [インスタンスの詳細を表示] をクリックして、[イントラネット URL] を表示します。 | はい | デフォルト値なし |
port | GDBインスタンスに接続するために使用されるポート番号。 | はい | 8182 |
username | GDBインスタンスに接続するために使用されるユーザー名。 | はい | デフォルト値なし |
password | GDBインスタンスに接続するために使用されるパスワード。 | はい | デフォルト値なし |
labels | ラベル。頂点またはエッジの名前です。GDB Readerは一度に複数の頂点またはエッジからデータを読み取ることができます。この場合、このパラメーターの値は["label1", "label2"]などの配列です。 | はい | デフォルト値なし |
labelType | ラベルのタイプ。有効な値:
| はい | デフォルト値なし |
column | 同期する頂点またはエッジ。 | はい | デフォルト値なし |
column -> name | 同期する頂点またはエッジプロパティの名前。頂点またはエッジプロパティを同期する場合、このパラメーターは必須です。 | はい | デフォルト値なし |
column -> type | 同期する頂点またはエッジプロパティを格納するためのデータ型。
| はい | デフォルト値なし |
column -> columnType | 同期する頂点またはエッジプロパティのカテゴリ。
| はい | デフォルト値なし |
GDB Writerのコード
GDBデータベースに頂点に関するデータを書き込む同期タスクを設定する
{ "order":{ "hops":[ { "from":"Reader", "to":"Writer" } ] }, "setting":{ "errorLimit":{ "record":"100" // 許容されるダーティデータレコードの最大数。 }, "speed":{ "throttle":true,// スロットリングを有効にするかどうかを指定します。値falseはスロットリングが無効であることを示し、値trueはスロットリングが有効であることを示します。mbpsパラメーターは、throttleパラメーターがtrueに設定されている場合にのみ有効になります。 "concurrent":3, // 並列スレッドの最大数。 "mbps":"12"// 最大伝送速度。単位:MB/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", // ラベル。頂点の名前です。 "srcLabel": "", // 頂点の場合は、このパラメーターを設定する必要はありません。 "dstLabel": "", // 頂点の場合は、このパラメーターを設定する必要はありません。 "labelType": "VERTEX", // ラベルのタイプ。値VERTEXは頂点を示します。 "writeMode": "INSERT", // GDB Writerがプライマリキーが重複するデータレコードを処理するモード。 "idTransRule": "labelPrefix", // 頂点のプライマリキーを変換するためのルール。 "srcIdTransRule": "none", // 頂点の場合は、このパラメーターを設定する必要はありません。 "dstIdTransRule": "none", // 頂点の場合は、このパラメーターを設定する必要はありません。 "column": [ { "name": "id", // 頂点プロパティの名前。 "value": "#{0}", // ソースの最初の列の値が頂点プロパティの値として使用されます。複数の列が指定されている場合、列を連結できます。この例では、0は列インデックスです。 "type": "string", // 頂点プロパティのデータ型。 "columnType": "primaryKey" // 頂点プロパティのカテゴリ。値primaryKeyはプライマリキーを示します。 }, // 頂点のプライマリキー。値はSTRING型のIDである必要があり、レコードが存在する必要があります。 { "name": "person_age", "value": "#{1}", // ソースの2番目の列の値が頂点プロパティの値として使用されます。複数の列が指定されている場合、列を連結できます。 "type": "int", "columnType": "vertexProperty" // 頂点プロパティのカテゴリ。値vertexPropertyは共通の頂点プロパティを示します。 }, // 頂点の共通プロパティ。値はINT、LONG、FLOAT、DOUBLE、BOOLEAN、またはSTRING型にすることができます。 { "name": "person_credit", "value": "#{2}", // ソースの3番目の列の値が頂点プロパティの値として使用されます。複数の列が指定されている場合、列を連結できます。 "type": "string", "columnType": "vertexProperty" }, // 頂点の共通プロパティ。 ] } "stepType":"gdb" } ], "type":"job", "version":"2.0" }
GDBデータベースにエッジに関するデータを書き込む同期タスクを設定する
{ "order":{ "hops":[ { "from":"Reader", "to":"Writer" } ] }, "setting":{ "errorLimit":{ "record":"100" // 許容されるダーティデータレコードの最大数。 }, "jvmOption":"", "speed":{ "throttle":true,// スロットリングを有効にするかどうかを指定します。値falseはスロットリングが無効であることを示し、値trueはスロットリングが有効であることを示します。mbpsパラメーターは、throttleパラメーターがtrueに設定されている場合にのみ有効になります。 "concurrent":3, // 並列スレッドの最大数。 "mbps":"12"// 最大伝送速度。単位:MB/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", // ラベル。エッジの名前です。 "labelType": "EDGE", // ラベルのタイプ。値EDGEはエッジを示します。 "srcLabel": "person", // エッジの始点頂点の名前。 "dstLabel": "software", // エッジの終点頂点の名前。 "writeMode": "INSERT", // GDB Writerがプライマリキーが重複するデータレコードを処理するモード。 "idTransRule": "labelPrefix", // エッジのプライマリキーを変換するためのルール。 "srcIdTransRule": "labelPrefix", // エッジの始点頂点のプライマリキーを変換するためのルール。 "dstIdTransRule": "labelPrefix", // エッジの終点頂点のプライマリキーを変換するためのルール。 "column": [ { "name": "id", // エッジプロパティの名前。 "value": "#{0}", // ソースの最初の列の値がエッジプロパティの値として使用されます。複数の列が指定されている場合、列を連結できます。 "type": "string", // エッジプロパティのデータ型。 "columnType": "primaryKey" // エッジプロパティのカテゴリ。値primaryKeyはプライマリキーを示します。 }, // エッジのプライマリキー。値はSTRING型のIDである必要があり、レコードが存在する必要があります。 { "name": "id", "value": "#{1}", // ソースの2番目の列の値がエッジプロパティの値として使用されます。複数の列が指定されている場合、列を連結できます。マッピングルールは、頂点をインポートするときに設定したものと同じである必要があります。 "type": "string", "columnType": "srcPrimaryKey" // エッジプロパティのカテゴリ。値srcPrimaryKeyは始点頂点のプライマリキーを示します。 }, // 始点頂点のプライマリキー。値はSTRING型のIDである必要があり、レコードが存在する必要があります。 { "name": "id", "value": "#{2}", // ソースの3番目の列の値がエッジプロパティの値として使用されます。複数の列が指定されている場合、列を連結できます。マッピングルールは、頂点をインポートするときに設定したものと同じである必要があります。 "type": "string", "columnType": "dstPrimaryKey" // エッジプロパティのカテゴリ。値dstPrimaryKeyは終点頂点のプライマリキーを示します。 }, // 終点頂点のプライマリキー。値はSTRING型のIDである必要があり、レコードが存在する必要があります。 { "name": "person_use_software_time", "value": "#{3}", // ソースの4番目の列の値がエッジプロパティの値として使用されます。複数の列が指定されている場合、列を連結できます。 "type": "long", "columnType": "edgeProperty" // エッジプロパティのカテゴリ。値edgePropertyは共通のエッジプロパティを示します。 }, // エッジの共通プロパティ。値はINT、LONG、FLOAT、DOUBLE、BOOLEAN、またはSTRING型にすることができます。 { "name": "person_regist_software_name", "value": "#{4}", // ソースの5番目の列の値がエッジプロパティの値として使用されます。複数の列が指定されている場合、列を連結できます。 "type": "string", "columnType": "edgeProperty" }, // エッジの共通プロパティ。 { "name": "id", "value": "#{5}", // ソースの6番目の列の値がエッジプロパティの値として使用されます。複数の列が指定されている場合、列を連結できます。 "type": "long", "columnType": "edgeProperty" }, // エッジの共通プロパティ。値はIDです。プライマリキーとは異なり、このプロパティはオプションです。 ] } "stepType":"gdb" } ], "type":"job", "version":"2.0" }
GDB Writerのコードのパラメーター
パラメーター | 説明 | 必須 | デフォルト値 |
datasource | データソースの名前。追加されたデータソースの名前と同じである必要があります。コードエディターを使用してデータソースを追加できます。 | はい | デフォルト値なし |
label | ラベル。頂点またはエッジの名前です。 GDB Writerは、ソーステーブルの列からラベルを取得できます。たとえば、このパラメーターを#{0}に設定すると、GDB Writerは最初の列の値をラベルとして使用します。列インデックスは0から始まります。 | はい | デフォルト値なし |
labelType | ラベルのタイプ。有効な値:
| はい | デフォルト値なし |
srcLabel |
| いいえ | デフォルト値なし |
dstLabel |
| いいえ | デフォルト値なし |
writeMode | GDB Writerがプライマリキーが重複するデータレコードを処理するモード。有効な値:
| はい | INSERT |
idTransRule | プライマリキーを変換するためのルール。有効な値:
| はい | none |
srcIdTransRule | labelType パラメーターがEDGEに設定されている場合、始点頂点のプライマリキーを変換するためのルール。有効な値:
| labelType パラメーターがEDGEに設定されている場合必須 | none |
dstIdTransRule | labelType パラメーターがEDGEに設定されている場合、終点頂点のプライマリキーを変換するためのルール。有効な値:
| labelType パラメーターがEDGEに設定されている場合必須 | none |
column | 同期する頂点またはエッジ。
プロパティのサンプル
| はい | デフォルト値なし |