You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Apache TinkerPop Gremlin加载CSV文件时遇方法调用错误求助

问题解决:Gremlin脚本创建图时getVertex()方法报错

错误原因

你遇到的错误源于三个关键点:

  • TinkerGraph.getVertex()方法要求传入顶点ID的对象类型(默认是Long),但你传入的是字符串,类型不匹配;
  • 调用g.addVertex(v)时直接传字符串,实际是将该字符串设为顶点的标签(Label),而非顶点ID,导致后续无法通过字符串找到对应顶点;
  • 脚本未跳过CSV的表头行,会尝试将"Source"、"Destination"也作为顶点添加,不符合需求。

修正后的脚本

g = TinkerGraph.open()
vs = [] as Set

// 读取CSV,跳过表头,收集所有顶点ID
new File("edges.txt").eachLine { l, lineNum ->
    if (lineNum == 1) return  // 跳过第一行表头
    p = l.split("\t")
    // 将字符串转为Long类型,匹配TinkerGraph默认ID类型
    vs << p[0].toLong()
    vs << p[1].toLong()
}

// 添加顶点,明确指定ID
vs.each { vId ->
    g.addVertex(T.id, vId)
}

// 读取CSV添加边,用Gremlin遍历器查找顶点
new File("edges.txt").eachLine { l, lineNum ->
    if (lineNum == 1) return
    p = l.split("\t")
    sourceId = p[0].toLong()
    destId = p[1].toLong()
    // 用g.V(id).next()获取顶点,这是标准Gremlin用法
    g.addEdge(g.V(sourceId).next(), g.V(destId).next(), "friend")
}

// 验证所有边
g.E

关键修正点

  • 指定顶点ID:用T.id参数明确设置顶点ID,确保和CSV中的数值对应,同时转为Long类型适配TinkerGraph默认配置;
  • 标准顶点查找:使用g.V(id).next()替代底层的getVertex(),这是跨Gremlin实现的通用写法,避免依赖特定图数据库的底层方法;
  • 跳过表头:添加行号判断,跳过CSV的第一行表头,避免无效顶点。

内容的提问来源于stack exchange,提问作者bahzad

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 12:35:14