16.2 複数のファイルからのグラフ・データのパラレル・ロード

複数のファイルを使用して、グラフをパラレルにロードできます。

次の例では、複数のファイルからグラフ・データをロードする方法を示します。

たとえば、次に示すように4つのパーティションに分割された頂点ファイルがあるとします。

vertex_file1

1,Color,1,red,,
2,Color,1,yellow,,
vertex_file2

3,Color,1,blue,,
4,Color,1,green,,
vertex_file3

5,Color,1,orange,,
6,Color,1,white,,
vertex_file4

7,Color,1,black,,

エッジ・ファイルは、次に示すように2つのパーティションに分割されています。

edge_file1

1,1,2,edge1,Weight,4,,1.0,
2,2,3,edge2,Weight,4,,2.0,
3,3,4,edge3,Weight,4,,3.0,
edge_file2

4,4,5,edge4,Weight,4,,4.0,
5,5,6,edge5,Weight,4,,5.0,
6,6,7,edge6,Weight,4,,6.0,

次のグラフ構成を使用すると、4つの頂点ファイルと2つのエッジ・ファイルから同じグラフにグラフ・データをロードできます。すべてのurisがJSONグラフ構成内で指定されていることに注意してください。

{
  "format": "flat_file",
  "vertex_uris": ["vertex_file1", "vertex_file2", "vertex_file3", "vertex_file4"],
  "edge_uris": ["edge_file1", "edge_file2"],
  "separator": ",",
  "edge_props": [
    {
      "name": "Weight",
      "type": "double"
    }
  ],
  "vertex_props": [
    {
      "name": "Color",
      "type": "string"
    }
  ]
}

次に示すように、Javaを使用して複数のファイル・パーティションを持つグラフ構成を作成することもできます。

FileGraphConfig config = GraphConfigBuilder
   .forFileFormat(Format.FLAT_FILE)
   .setSeparator(",")
   .addVertexUri("vertex_file1")
   .addVertexUri("vertex_file2")
   .addVertexUri("vertex_file3")
   .addVertexUri("vertex_file4")
   .addEdgeUri("edge_file1")
   .addEdgeUri("edge_file2")
   .addVertexProperty("Color", PropertyType.STRING)
   .addEdgeProperty("Weight", PropertyType.DOUBLE)
   .build();

ノート:

前述のコードのグラフ構成には、「Weight」という名前のdoubleのエッジ・プロパティが1つと、「Color」という名前のstringの頂点プロパティが1つ含まれています。

これで、グラフ・ビルダーAPIを使用したグラフの作成の説明に従って、ファイルからグラフ・データをロードできます。

グラフ・サーバー(PGX)では、ファイルごとにスレッドを1つずつ使用して、自動的にグラフがパラレルにロードされます。つまり、グラフ・サーバー(PGX)インスタンスについて構成されている並列度に応じて、指定したファイルと同じ数のスレッドを使用して、グラフをパラレルにロードできます。

ノート:

グラフ構成は、指定したすべてのファイルに使用されるため、これらのすべてのファイルに同じ形式を使用すること、つまり、同じセパレータを使用し、同じ定義済プロパティを持ち、同じ形式仕様に準拠していることが非常に重要です。