Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Neo4j 调用过程'apoc.cypher.mapParallel2'失败:原因:java.lang.RuntimeException:轮询错误,已达到10秒超时_Neo4j_Parallel Processing_Neo4j Apoc - Fatal编程技术网

Neo4j 调用过程'apoc.cypher.mapParallel2'失败:原因:java.lang.RuntimeException:轮询错误,已达到10秒超时

Neo4j 调用过程'apoc.cypher.mapParallel2'失败:原因:java.lang.RuntimeException:轮询错误,已达到10秒超时,neo4j,parallel-processing,neo4j-apoc,Neo4j,Parallel Processing,Neo4j Apoc,我试图通过使用以下查询来计算关系(c:Cell)-[:EXPRSSED_IN]->(g:Gene)的数量: CYPHER runtime=pipelined MATCH (c:Cell)-[r:EXPRESSED_IN]->(g:Gene) WHERE c.id >= 0 AND c.id < 6000 RETURN count(*) AS count; CYPHER运行时=流水线 匹配(c:细胞)-[r:在]->(g:基因中表达) 其中c.id>=0且c.id=0且c.id

我试图通过使用以下查询来计算关系(c:Cell)-[:EXPRSSED_IN]->(g:Gene)的数量:

CYPHER runtime=pipelined
MATCH (c:Cell)-[r:EXPRESSED_IN]->(g:Gene)
WHERE c.id >= 0 AND c.id < 6000
RETURN count(*) AS count;
CYPHER运行时=流水线
匹配(c:细胞)-[r:在]->(g:基因中表达)
其中c.id>=0且c.id<6000
返回计数(*)作为计数;
查询已成功执行。然而,这比我预期的要慢。计算大约4500万行的列表大约需要6秒钟。我不确定这是否是“常见情况”。尽管如此,我想通过使用并行处理进一步加快它的速度。下面是我正在尝试执行的查询:

MATCH (c:Cell)
WHERE c.id >= 0 AND c.id < 6000
WITH COLLECT(c) AS cells
CALL apoc.cypher.mapParallel2("MATCH (_)-[:EXPRESSED_IN]->(g:Gene) RETURN _.id AS cell_id, g.id AS gene_id",
    {parallel:True, batchSize:1000, concurrency:20},
    cells,
    20) yield value
return COUNT(*) as count;
匹配(c:单元格)
其中c.id>=0且c.id<6000
使用COLLECT(c)作为单元格
调用apoc.cypher.mapParallel2(“MATCH()-[:EXPRESSED_IN]->(g:Gene)RETURN 0.id作为cell_id,g.id作为Gene_id”,
{parallel:True,batchSize:1000,并发性:20},
细胞,
20) 收益率
返回计数(*)作为计数;
它给了我调用过程“apoc.cypher.mapParallel2”失败的错误
:由以下原因引起:java.lang.RuntimeException:错误轮询,达到10秒超时。
我猜这与套接字和端口有关,因为服务器可能会打开一些套接字以与其工作人员通信

谁能给我一个解决方案?提前谢谢

更新1:我使用的是neo4j企业版4.1.3


更新2:我的查询实际上不正确。我已经修复了它,它成功地执行了。但是,现在比不进行任何并行处理要花费更多的时间

如果您只对节点的关系数量感兴趣,则可以使用关系存储进行以下查询:

MATCH (c:Cell)
WHERE c.id >= 0 AND c.id < 6000
RETURN sum(size( (c)-[:EXPRESSED_IN]->()) as count
匹配(c:单元格)
其中c.id>=0且c.id<6000
返回和(大小((c)-[:用]->()表示)作为计数