【问题标题】:Neo4J Load CSV from Cypher throws "Unknown Error" or DeadlockDetectedNeo4J 从 Cypher 加载 CSV 抛出“未知错误”或 DeadlockDetected
【发布时间】:2014-10-22 05:16:05
【问题描述】:

我正在评估使用 Neo4J Community 2.1.3 来存储概念列表和它们之间的关系。我正在尝试使用 Web 界面中的 Cypher 将我的示例测试数据(CSV 文件)加载到 Neo4J 中,如在线手册中所述。

我的数据如下所示:

概念.csv

id,concept
1,tree
2,apple
3,grapes
4,fruit salad
5,motor vehicle
6,internal combustion engine

relationships.csv

sourceid,targetid
2,1
4,2
4,3
5,6
6,5

等等...对于我的示例,我有大约 17K 的概念和大约 16M 的关系。按照手册,我启动了 Neo4J 服务器,并将其输入到 Cypher:

LOAD CSV WITH HEADERS FROM "file:///data/concepts.csv" AS csvLine 
CREATE (c:Concept { id: csvLine.id, concept: csvLine.concept })

这很好,加载了我的概念。然后我尝试加载我的关系。

USING PERIODIC COMMIT
LOAD CSV WITH HEADERS FROM "file:///data/relationships.csv" AS csvLine
MATCH (c1:Concept { id: csvLine.sourceid }),(c2:Concept { id: csvLine.targetid })
CREATE (c1)-[:RELATED_TO]->(c2)

这将运行一个小时左右,但总是停止:

  • “未知错误”(没有其他信息!),或
  • "Neo.TransientError.Transaction.DeadlockDetected" 带有详细消息,例如 “LockClient[695] 不能等待资源 RWLock[RELATIONSHIP(572801), hash=267423386] 因为 => LockClient[695]

它会在加载 200-300K 关系后停止。我在relationships.csv 上做了一个“sort | uniq”,所以我很确定没有重复。我查看了 data/log 中的日志文件,但没有发现错误消息。

有人见过这个吗?顺便说一句,我不介意失去一小部分关系,所以如果我可以关闭 ACID 事务,我会很高兴。我还想避免在这个阶段编写代码(使用 Java API)。我只是想加载我的数据来尝试一下。有没有办法做到这一点?

我的完整数据集将包含数百万个概念,可能还有数亿个关系。有谁知道 Neo4J 是否可以处理这么多数据?

谢谢。

【问题讨论】:

    标签: neo4j cypher load-csv


    【解决方案1】:

    你做得对。 你使用 neo4j-shell 还是浏览器?

    你做到了吗:create index on :Concept(id);

    如果您没有索引,搜索概念所需的时间将成倍增长,因为它必须扫描此标签的所有节点以查找此 id 值。你应该/也可以通过在你的查询前面加上 PROFILE 来检查它是否对两个匹配项都使用索引。

    尽管导入了数​​百万个关系,但以前从未见过这种僵局。 你能分享完整的堆栈跟踪吗?如果你使用 shell,你可能想做export STACKTRACES=true

    你能用USING PERIODIC COMMIT 1000吗?

    【讨论】:

    • 我正在使用浏览器。我没有创建索引。但是,即使没有这个,我也可以成功地通过 id 查询这些概念并跟踪那些设法添加的关系。我可能会试试这个,明天还有shell。 1000 不是默认的定期提交吗?感谢您的提示。
    • 我向 Concept(id) 添加了一个唯一约束,它还自动添加了一个索引,并使用了 USING PERIODIC COMMIT 1000。结果是我所有的关系都加载得更快并且没有任何错误。不确定是哪位修复了它,但感谢您帮助我解决此问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多