从csv中的数据创建titan中的图形 - 示例wiki.Vote给出错误

时间:2015-06-25 21:04:37

标签: graph titan bulk-load

我是Titan的新手 - 我加载了titan并成功运行了GraphOfTheGods示例,包括给出的查询。接下来,我继续尝试批量加载csv文件以创建图表,并按照10的权力中的步骤进行操作 - 第1部分http://thinkaurelius.com/2014/05/29/powers-of-ten-part-i/

我在加载wiki-Vote.txt时遇到错误

gremlin> g = TitanFactory.open("/tmp/1m") Backend shorthand unknown: /tmp/1m 

我试过了:

g = TitanFactory.open('conf/titan-berkeleydb-es.properties’)

但在load-1m.groovy的下一步中出现错误

==>titangraph[berkeleyje:/titan-0.5.4-hadoop2/conf/../db/berkeley] No signature of method: groovy.lang.MissingMethodException.makeKey() is applicable for argument types: () values: [] Possible solutions: every(), any()

任何暗示下一步该做什么?我第一次使用groovy。使用gremlin需要什么样的常规专业知识

2 个答案:

答案 0 :(得分:2)

该博客文章适用于Titan 0.4.x.当Titan达到0.5.x时,API发生了变化。帖子中讨论的相同原则通常适用于数据加载,但语法在不同的地方有所不同。目的是在Titan 1.0全面支持TinkerPop3时以某种形式更新这些帖子。在此之前,您需要将这些代码示例转换为修订后的API。

例如,创建berkeleydb数据库的简便方法是:

g = TitanFactory.build()
    .set("storage.backend", "berkeleyje")
    .set("storage.directory", "/tmp/1m")
    .open();

请参阅文档here。然后,现在描述了大多数模式创建代码(这是最大的变化)herehere

答案 1 :(得分:0)

经过今天的大量实验,我终于明白了。需要做出很多改变:

  • 使用makePropertyKey()代替makeKey()和makeEdgeLabel()而不是makeLabel()
  • 使用基数(Cardinality.SINGLE)代替unique()
  • 构建索引要复杂得多。使用管理系统代替图表来制作密钥和标签,以及构建索引(参见https://groups.google.com/forum/#!topic/aureliusgraphs/lGA3Ye4RI5E

对于后代,这是应该有效的修改过的脚本(从0.5.4开始):

g = TitanFactory.build().set("storage.backend", "berkeleyje").set("storage.directory", "/tmp/1m").open()

m = g.getManagementSystem()
k = m.makePropertyKey('userId').dataType(String.class).cardinality(Cardinality.SINGLE).make()
m.buildIndex('byId', Vertex.class).addKey(k).buildCompositeIndex()
m.makeEdgeLabel('votesFor').make()
m.commit()

getOrCreate = { id ->
  def p = g.V('userId', id)
    if (p.hasNext()) {
        p.next()
    } else {
        g.addVertex([userId:id])
    }
}

new File('wiki-Vote.txt').eachLine {
  if (!it.startsWith("#")){
    (fromVertex, toVertex) = it.split('\t').collect(getOrCreate)
    fromVertex.addEdge('votesFor', toVertex)
  }
}

g.commit()