1

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

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

  • 想知道是否需要将 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

追溯

回溯(最后一次调用):文件“/home/alienone/Programming/Python/OSINT/MANDIANTAPT/spitball.py”,第 63 行,在 main() 文件“/home/alienone/Programming/Python/OSINT/MANDIANTAPT/ spitball.py”,第 59 行,在主 graph_db.create(*sorted_nodes) 文件中“/home/alienone/.pythonbrew/pythons/Python-2.7.5/lib/python2.7/site-packages/py2neo/neo4j.py ”,第 420 行,在创建返回 batch.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 行,在提交身份证,请求枚举(self.requests)文件“/home/alienone/.pythonbrew/pythons/Python-2.7.5/lib/python2.7/site-packages/py2neo/rest.py”,第428行,在_send返回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)文件“/home/alienone/.pythonbrew/pythons/Python-2.7.5/lib/python2。 7/site-packages/py2neo/rest.py",第 279 行,在init中 引发 SystemError(body) SystemError:无

进程以退出代码 1 结束

4

1 回答 1

1

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

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

于 2013-08-21T12:21:05.347 回答