当与大数据建立关系时,Neo4j卡住了

时间:2017-07-04 16:14:03

标签: neo4j cypher bigdata

我正在使用此密码查询在Neo4j中创建两个节点之间的关系

MATCH (first:FIRSTNODE)
with first
MATCH (second:SECONDNODE)
WHERE first.ID = second.ID
CREATE (first)-[:RELATION]->(second)

第一个有100.000个节点,第二个有1.100.000个节点。

我导入了csv文件,然后我创建了两个表的索引;但是当我尝试运行查询时,关系neo4j卡住并停止工作。 我注意到,当发生这种情况时,cpu使用率会达到100%。

我正在使用8x4.0Ghz的CPU和10Gb的RAM以及SSD。

你知道什么可以帮助我解决这个问题吗?

编辑1:

使用apoc.periodic.commit它有效。但是如果那时我会运行第二个这样的查询:

call apoc.periodic.commit("
    MATCH (third:THIRDNODE)
    WHERE NOT (third)-[:RELATION2]->()
    WITH third LIMIT {limit}
    MATCH (second:SECONDNODE)
    WHERE third.ID = second.ID2
    CREATE (third)-[:RELATION2]->(second)
    RETURN count(*)
", {limit:10000})
再次陷入困境

1 个答案:

答案 0 :(得分:3)

您可以尝试使用apoc.periodic.commit中的APOC Procedures。关于这个程序的文档说:

  

apoc.periodic.commit(statement,params) - 运行给定的语句   单独的交易,直到它返回0

安装APOC程序并尝试:

call apoc.periodic.commit("
    MATCH (first:FIRSTNODE), 
    WHERE NOT (first)-[:RELATION]->()
    WITH first LIMIT {limit}
    MATCH (second:SECONDNODE)
    WHERE first.ID = second.ID
    CREATE (first)-[:RELATION]->(second)
    RETURN count(*)
", {limit:10000})

请记住根据您使用的Neo4j版本安装APOC程序。请查看version compatibility matrix