首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Neo.DatabaseError.General.UnknownError - Java堆空间- Neo4j - Cypher

Neo.DatabaseError.General.UnknownError - Java堆空间- Neo4j - Cypher
EN

Stack Overflow用户
提问于 2016-08-12 21:45:09
回答 1查看 1K关注 0票数 0

我使用LOAD CSV WITH HEADERS加载了数据(2.8M)记录

当我尝试在Cypher中使用以下脚本创建关系时,我得到以下错误:-Neo.DatabaseError.General.UnknownError - Java heap space我还创建了一个索引来加速关系处理。

代码语言:javascript
复制
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

我已经通过了其他面临同样问题的链接,但没有找到相同的解决方案。因此我重新发布了这个问题。我的dataset有两列ENT_ID和PARENTID。我正在尝试使用上面的查询创建关系。

我没有Java或Java虚拟机的背景知识。基于其他链接,我想我可以通过使用下面的属性来消除这个错误:

neo4j.conf:

代码语言:javascript
复制
dbms.memory.pagecache.size=3g

--初始Java堆大小( MB):

代码语言:javascript
复制
wrapper.java.initmemory=1024

--最大Java堆大小( MB):

代码语言:javascript
复制
wrapper.java.maxmemory=16000

--其他可以提高性能的有益设置:

代码语言:javascript
复制
wrapper.java.additional.6=-d64
wrapper.java.additional.7=-server
wrapper.java.additional.8=-Xss1024k

JAVA VM调整:

代码语言:javascript
复制
 -Xmx4000M
 -Xms4000M 
 -Xmn1000M

如果能帮上忙,我将不胜感激

编辑:

基于下面的评论:我使用了以下查询:它仍然抛给我相同的Java堆空间:

代码语言:javascript
复制
PROFILE
MATCH (a:Entity)
WHERE a.PARENTID IS NOT NULL
WITH a
MATCH (b:Entity {ENT_ID : a.PARENTID})
MERGE (a)-[r:RELATION]->(b)

请帮帮忙。

谢谢

EN

回答 1

Stack Overflow用户

发布于 2016-08-13 00:16:47

正如Usman评论的那样,MATCH(Entity)行是无用的,更糟糕的是,它匹配数据库中的每个节点,而不仅仅是实体节点,并导致笛卡尔乘积。

我认为您想要的是这样的东西,处理all :实体和父项,并从它们到它们的父项建立一个关系:

代码语言:javascript
复制
PROFILE
MATCH (a:Entity)
WHERE a.PARENTID IS NOT NULL
WITH a
MATCH (b:Entity {ENT_ID : a.PARENTID})
MERGE (a)-[r:RELATION]->(b)

这应该避免笛卡尔乘积,并且复杂度为n,其中n是实体节点的数量。

我删除了返回,因为您可能不想返回数百万个关系。之后,如果您想要计算这些关系的数量,可以使用:

代码语言:javascript
复制
MATCH (:Entity)-[r:Relation]->(:Entity)
RETURN COUNT(r)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38919528

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档