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



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

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

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

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

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

谢谢。

这是

在泰坦邮件列表中交叉发布的...

如果你想使用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方法。

您可能需要一个自定义的 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);

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

如何将csv转换为graphml,然后使用gremlin立即加载它

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

这难道不比为每个addVertex/addEdge进行gremlin调用更高性能吗?

相关内容

  • 没有找到相关文章

最新更新