gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 09:36:02 27 4
gpt4 key购买 nike

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

当我尝试在 Cypher 中使用以下脚本创建关系时,出现以下错误 -Neo.DatabaseError.General.UnknownError - Java 堆空间我还创建了一个索引来加快关系过程。

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 VM 调优:

 -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)

请帮忙。

谢谢

最佳答案

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

我认为你想要的是这样的,处理所有具有parentid的:Entity,并从它们到它们的父级建立一个关系:

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 是 :Entity 节点的数量。

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

MATCH (:Entity)-[r:Relation]->(:Entity)
RETURN COUNT(r)

关于java - Neo.DatabaseError.General.UnknownError - Java 堆空间 - Neo4j - Cypher,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38919528/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com