我正在尝试使用JAVA中的Cassandra后端从CSV文件向Titan 1.0.0加载数百万个节点。如何加载它们?
我检查过我们可以使用BulkLoaderVertexProgram加载它们,但它会加载GraphSON格式的数据。
如何开始编写JAVA代码从CSV批量加载数据?你能指定一些起始参考,我可以查看并开始编写代码吗?
我是否必须在我的系统上运行Spark / Hadoop才能使用Bulkloaderprogram使用的SparkComputerGraph?
我无法开始编写代码,因为我不了解如何使用bulkloderprogram从CSV读取数据。你能提供一些起始链接来继续Java代码吗?
感谢。
答案 0 :(得分:2)
这是Titan mailing list ...
上的交叉发布如果您正在寻找使用Java代码,请查看Alex和Matthew的Marvel图示例:
它创建一个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调用吗?