neo4j - 我可以使用 apoc.periodic.updates 来返回查询输出吗?
问题描述
我有一个查询,它从 csv 文件中读取一组 ID,在数据库中搜索这些节点并将结果写入 csv。我试图让这个查询尽快运行,并且想知道我是否可以使用以下方法并行化读取操作:http apoc.periodic.iterate
:
//neo4j-contrib.github.io/neo4j-apoc-procedures/3.5/cypher-execution/提交批处理/
我已经编写了一个查询来满足我的需要,但实际上我只是想知道如何尽快运行这个查询。
这是查询的当前版本:
CALL apoc.export.csv.query('CALL apoc.load.csv(\'file:///edge.csv\') YIELD map as edge
MATCH (n:paper)
WHERE n.paper_id = edge.`From` OR n.paper_id = edge.`To`
RETURN n.paper_title',
'node.csv', {});
此查询创建了node.csv
我想要的结果文件,但edge.csv
随着大小的增加,操作可能会大大减慢。
我希望做的是这样的:
CALL apoc.periodic.iterate(
'LOAD CSV WITH HEADERS FROM \'file:///edge.csv\' as row RETURN row',
'CALL apoc.export.csv.query(\'MATCH (n:paper) WHERE n.paper_id = row.`From` OR n.paper_id = row.`To` RETURN DISTINCT(n.paper_id) AS paper_id\', \'nodePar.csv\', {})'
, {batchSize:10, iterateList:true, parallel:true, failedParams:0})
;
此查询将运行,但除了以下消息外不产生任何输出:
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| batches | total | timeTaken | committedOperations | failedOperations | failedBatches | retries | errorMessages | batch | operations | wasTerminated | failedParams |
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| 14463 | 144629 | 0 | 144629 | 0 | 0 | 0 | {} | {total: 14463, committed: 14463, failed: 0, errors: {}} | {total: 144629, committed: 144629, failed: 0, errors: {}} | FALSE | {} |
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
我的主要问题是:可以以这种方式使用 apoc.periodic.iterate 来加速此查询,如果可以,如何?
然后或者,随着文件大小的增长,是否有任何其他方法可以加速此查询edge.csv
?
解决方案
推荐阅读
- serilog - 尝试使用命名空间的第一部分过滤第二个 RollingFile
- php - Zabbix REST-API 输出限制为 10 万条记录
- c++11 - 如何在 ASCII 游戏期间阻止蓝线出现在 Windows 控制台上?
- lua - local a = true print(a and false or true) 为什么无论 a==false 还是 a == true 结果总是正确的?
- kubernetes - 如何通过 Kubernetes 中的入口公开 Web 应用程序?
- unity3d - Zenject Unity3D测试场景命中“无法解析类”如何摆脱?
- reactjs - 如何在资源列表中显示列表当前过滤器
- angular - 如何在 Angular 组件中获取 MatstepLabel
- python - 如何使用条件进行python循环
- if-statement - 将 if-else 语句转换为 if-else if-else 语句