4

1MB のノードの CSV と別の 1MB のエッジの CSV を、Cassandra で実行されている Titan グラフ データベースにインポートする方法について、サンプル コードまたはヒントを提供できる人はいますか?

Gremlin 経由で小さな CSV ファイルをインポートしていますが、これは大きなファイルには適していないようです。

Faunus がこれを実行できるのを見てきましたが、できればセットアップに数日を費やすのは避けたいと思います。

BatchGraph が適しているように見えますが ( https://github.com/tinkerpop/blueprints/wiki/Batch-Implementation )、この例は不完全なようです。

4

1 に答える 1

6

私の質問はhttps://groups.google.com/forum/#!topic/aureliusgraphs/ew9PJVxa8Xwで回答されました:

1) gremlin スクリプトは 1MB のインポートに適しています。 (Stephen Mallette)

2) BatchGraph コード (Daniel Kuppitz)

前提条件:

echo "alice,32"         > /tmp/vertices.csv
echo "bob,33"          >> /tmp/vertices.csv
echo "alice,knows,bob"  > /tmp/edges.csv

グレムリン REPL では:

config = new BaseConfiguration()
config.setProperty("storage.backend", "inmemory")

g = TitanFactory.open(config)
bg = new BatchGraph(g, VertexIDType.STRING, 1000)

new File("/tmp/vertices.csv").each({ line ->
  (username, age) = line.split(",")
  user = bg.addVertex("user::" + username)
  ElementHelper.setProperties(user, ["username":username,"age":age.toInteger()])
})

new File("/tmp/edges.csv").each({ line ->
  (source, label, target) = line.split(",")

  v1 = bg.getVertex("user::" + source)
  v2 = bg.getVertex("user::" + target)

  bg.addEdge(null, v1, v2, label)
})

bg.commit()
于 2013-09-25T16:27:03.880 に答える