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)インスタンスについて構成されている並列度に応じて、指定したファイルと同じ数のスレッドを使用して、グラフをパラレルにロードできます。
ノート:
グラフ構成は、指定したすべてのファイルに使用されるため、これらのすべてのファイルに同じ形式を使用すること、つまり、同じセパレータを使用し、同じ定義済プロパティを持ち、同じ形式仕様に準拠していることが非常に重要です。親トピック: グラフ・サーバー(PGX)を使用したファイルの操作