如何使用Bulkloadervertextprogram将数百万个顶点从CSV加载到Titan 1.0.0?

时间:2016-02-03 21:01:01

标签: graph-databases titan bulkloader

我正在尝试使用JAVA中的Cassandra后端从CSV文件向Titan 1.0.0加载数百万个节点。如何加载它们?

我检查过我们可以使用BulkLoaderVertexProgram加载它们,但它会加载GraphSON格式的数据。

如何开始编写JAVA代码从CSV批量加载数据?你能指定一些起始参考,我可以查看并开始编写代码吗?

我是否必须在我的系统上运行Spark / Hadoop才能使用Bulkloaderprogram使用的SparkComputerGraph?

我无法开始编写代码,因为我不了解如何使用bulkloderprogram从CSV读取数据。你能提供一些起始链接来继续Java代码吗?

感谢。

3 个答案:

答案 0 :(得分:2)

这是Titan mailing list ...

上的交叉发布

如果您正在寻找使用Java代码,请查看Alex和Matthew的Marvel图示例:

https://github.com/awslabs/dynamodb-titan-storage-backend/blob/1.0.0/src/main/java/com/amazon/titan/example/MarvelGraphFactory.java

它创建一个Titan模式,解析一个CSV,然后使用基本的Gremlin addVertex()和addEdge()来构建图形。您会注意到TitanGraph并未在工厂中实例化,因此即使它位于Titan-DynamoDB示例中,您也可以将其与任何Titan后端(Cassandra,HBase,Berkeley)一起使用。

如果你的图形数据是数百万,你可以在你自己的机器上使用Titan-BerkeleyJE图形,这可能是一个更容易使用的后端而不是Cassandra集群。我建议您最初不要太多地加载大量数据 - 首先考虑如何将Titan和TinkerPop与OLTP一起使用,然后再使用OLAP方法。

答案 1 :(得分:1)

您可能需要一个自定义Java软件来读取您的CSV文件并使用它们加载图表。

如果您想使用OGM,这意味着您需要创建POJO类作为数据的数据模型,您可以使用Peapod轻松创建数据模型。

所以这是一个例子

@Vertex
public abstract class Person {
  public abstract String getName();
  public abstract void setName(String name);

  public abstract List<Knows> getKnows();
  public abstract Knows getKnows(Person person);
  public abstract Knows addKnows(Person person);
  public abstract Knows removeKnows(Person person);
}

@Edge
public abstract class Knows {
  public abstract void setYears(int years);
  public abstract int getYears();
}

要加载数据,这是一个例子,

FramedGraph g=new FramedGraph(TitanFactory.open("path_to_prop_file"));
Person person1=g.addVertex(Person.class);
person.setName("M-T-A");

Person person2=g.addVertex(Person.class);
person2.setName("Amnesiac");

Knows pKnowsP2=person.addKnows(person1);
pKnowsP2.setYears(1);

比你想象的容易吗?希望如此。

答案 2 :(得分:-1)

如何将csv转换为graphml,然后使用gremlin

立即加载它
g = TitanFactory.open('bin/cassandra.local')  
gremlin> g.loadGraphML('data/graph-of-the-gods.xml')
gremlin> g.commit()

这不是为每个addVertex / addEdge进行gremlin调用吗?