【问题标题】:py2neo - Neo4j - System Error - Create Batch Nodes/Relationshipspy2neo - Neo4j - 系统错误 - 创建批处理节点/关系
【发布时间】:2013-07-27 21:44:59
【问题描述】:

尝试批量创建节点和关系 - 批量创建失败 - 帖子末尾的回溯

注意具有较小节点子集的代码功能 - 当涉及大量关系时会失败,不清楚发生的限制是什么。

  • 想知道是否需要将 ulimit 增加到 40,000 个以上的打开文件
  • 阅读某处人们在执行批量创建时遇到 REST API 的 Xstream 问题 - 不清楚问题集是在频谱的 py2neo 端,还是在 Neo4j 服务器调整/配置上,还是在 Python 端光谱。 任何指导将不胜感激。

数据集中的一个集群最终在 700 多个节点中包含大约 625525 个关系。 总关系将超过 100 万 - 使用带有 x86_64 的 Apple Macbook Pro Retina - Ubuntu 13.04、SSD、8GB 内存。

  • Neo4j:配置的 auto_indexing 和 auto_relationships 设置为 ON
  • 通过 Python Panadas DataFrame.groupby() 对节点进行集群/分组
  • 节点:包含 3 个属性
  • 关系属性:1 -> 已创建 IN & Out 关系
  • ulimit 设置为 40,000 个打开的文件

代码

https://github.com/alienone/OSINT/blob/master/MANDIANTAPT/spitball.py

  • 操作系统:Ubuntu 13.04
  • Python 版本:2.7.5
  • py2neo 版本:1.5.1
  • Java 版本:1.7.0_25-b15
  • Neo4j 版本:社区版 1.9.2

追溯

Traceback(最近一次调用最后一次): 文件“/home/alienone/Programming/Python/OSINT/MANDIANTAPT/spitball.py”,第 63 行,在 主要的() 文件“/home/alienone/Programming/Python/OSINT/MANDIANTAPT/spitball.py”,第 59 行,在 main graph_db.create(*sorted_nodes) 创建文件“/home/alienone/.pythonbrew/pythons/Python-2.7.5/lib/python2.7/site-packages/py2neo/neo4j.py”,第 420 行 返回批处理.submit() 提交中的文件“/home/alienone/.pythonbrew/pythons/Python-2.7.5/lib/python2.7/site-packages/py2neo/neo4j.py”,第 2123 行 用于 self._submit() 中的响应 提交中的文件“/home/alienone/.pythonbrew/pythons/Python-2.7.5/lib/python2.7/site-packages/py2neo/neo4j.py”,第 2092 行 对于 id,请求枚举(self.requests) _send 中的文件“/home/alienone/.pythonbrew/pythons/Python-2.7.5/lib/python2.7/site-packages/py2neo/rest.py”,第 428 行 return self._client().send(request) 文件“/home/alienone/.pythonbrew/pythons/Python-2.7.5/lib/python2.7/site-packages/py2neo/rest.py”,第 365 行,发送 返回响应(request.graph_db,rs.status,request.uri,rs.getheader(“位置”,无),rs_body) init 中的文件“/home/alienone/.pythonbrew/pythons/Python-2.7.5/lib/python2.7/site-packages/py2neo/rest.py”,第 279 行 引发系统错误(正文) 系统错误:无

进程以退出代码 1 结束

【问题讨论】:

  • 仅供参考 - 一旦在 Neo4j 仪表板上看到 525K+ 关系,就会发生系统错误 -
  • 问题集已解决。在具有 32GB 内存和 16CPU 内核的测试服务器上启动 Neo4j。从 8GB 内存的笔记本电脑上执行 Python py2neo 脚本,一切都在不到 90 秒的时间内成功完成。
  • 如果你能写一篇博文为别人做文档会不会很酷?

标签: python neo4j py2neo


【解决方案1】:

我遇到了类似的问题。处理它的一种方法是对数据块而不是整个数据集执行batch.submit()。这当然会慢一些,但是将 100 万个节点分成 5000 个块仍然比单独添加每个节点要快。

我使用一个小的帮助类来执行此操作,注意我的所有节点都被索引:https://gist.github.com/anonymous/6293739

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-01-26
    • 2023-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-27
    相关资源
    最近更新 更多