【发布时间】: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 秒的时间内成功完成。
-
如果你能写一篇博文为别人做文档会不会很酷?