【发布时间】:2016-12-19 13:26:41
【问题描述】:
我使用 LOAD CSV WITH HEADERS 加载了数据 (2.8 M) 记录
当我尝试在 Cypher 中使用以下脚本创建关系时,我收到以下错误 -Neo.DatabaseError.General.UnknownError - Java heap space 我还创建了一个索引来加快关系进程。
CREATE INDEX ON :Entity(ENT_ID)
PROFILE
MATCH(Entity)
MATCH (a:Entity {ENT_ID : Entity.ENT_ID})
WITH Entity, a
MATCH (b:Entity {ENT_ID : Entity.PARENTID})
WITH a,b
MERGE (a)-[r:RELATION]->(b)
RETURN r
我已经浏览了其他遇到相同问题的链接,但没有找到相同的解决方案。因此我重新发布这个问题。我的数据集有 2 列 ENT_ID 和 PARENTID。我正在尝试使用上述查询创建关系。
我没有 Java 或 Java 虚拟机的背景知识。仅基于其他链接,我认为使用以下属性可以消除错误:
neo4j.conf:
dbms.memory.pagecache.size=3g
-- 初始 Java 堆大小(以 MB 为单位):
wrapper.java.initmemory=1024
-- 最大 Java 堆大小(以 MB 为单位):
wrapper.java.maxmemory=16000
-- 应该提高性能的其他有益设置:
wrapper.java.additional.6=-d64
wrapper.java.additional.7=-server
wrapper.java.additional.8=-Xss1024k
JAVA 虚拟机调优:
-Xmx4000M
-Xms4000M
-Xmn1000M
感谢您的帮助
编辑:
根据下面的评论:我使用了以下查询:它仍然抛出相同的 Java 堆空间:
PROFILE
MATCH (a:Entity)
WHERE a.PARENTID IS NOT NULL
WITH a
MATCH (b:Entity {ENT_ID : a.PARENTID})
MERGE (a)-[r:RELATION]->(b)
请帮忙。
谢谢
【问题讨论】:
-
问题出现在您的 CYPHER 查询中,因为
MATCH(Entity)也匹配所有其他附有Entity的节点。在你的情况下,现在用MATCH (en:Entity) WITH en替换它,它使笛卡尔积和Neo4j 服务器变得无响应。