gpt4 book ai didi

neo4j - 使用 Neo4j 导入工具在 Neo4j 中导入大型数据集需要很长时间(> 12 小时)

转载 作者:行者123 更新时间:2023-12-02 03:20:37 25 4
gpt4 key购买 nike

我有一个大型数据集(大约 1B 个节点和几十亿个关系),我试图将其导入 Neo4j。我正在使用 Neo4j 导入工具。节点在一个小时内完成导入,但是从那时起,导入器在节点索引准备阶段(除非我错误地读取下面的输出)现在已经超过 12 个小时了。

...
有效内存:
可用机器内存:184.49 GB
最大堆内存:26.52 GB

节点
[>:23.39 MB/s---|PROPERTIE|NODE:|LAB|*v:37.18 MB/s------------------------ --------------------] 1B
1h 7m 18s 54ms 内完成
准备节点索引
[*排序:11.52 GB-------------------------------------------- -------------------------------------]881M
...

我的问题是如何加快速度?我在想以下几点:
1. 拆分节点和关系的导入命令并进行节点导入。
2. 在节点上创建索引
3. 进行合并/匹配以摆脱欺骗
4.做rels导入。

这会有所帮助吗?还有什么我应该尝试的吗?堆大小是否太大(我认为不是,但想提出意见)?

谢谢。

更新
我还尝试在同一台机器上导入一半的数据,但它在大致相同的时间(按比例)再次陷入该阶段。所以我基本上消除了磁盘空间和内存的问题。
我还检查了我的标题(因为我注意到其他人在标题不正确时遇到了这个问题),他们对我来说似乎是正确的。关于我应该看什么的任何建议?

进一步更新
好吧,现在它变得有点荒谬了。我将数据大小减少到只有一个大文件(大约 3G)。它只包含单一种类的节点,并且只有 id。所以数据看起来像这样
1|作者
2|作者
3|作者

和标题(在一个单独的文件中)看起来像这样
authorID:ID(作者)|:LABEL

我的导入仍然停留在排序阶段。我很确定我在这里做错了什么。但我真的不知道是什么。这是我调用它的命令行
/var/lib/neo4j/bin/neo4j-import --into data/db/graph.db --id-type string --delimiter "|"\
--bad-tolerance 1000000000 --skip-duplicate-nodes true --stacktrace true --ignore-empty-strings true\
--nodes:Author "data/author/author_header_label.csv,data/author/author_half_label.csv.gz"

坏容忍和跳过重复节点的大多数选项都在那里,看看我是否可以至少以某种方式通过导入一次。

最佳答案

我想我发现了这个问题。我在这里使用了一些技巧 http://neo4j.com/developer/guide-import-csv/#_super_fast_batch_importer_for_huge_datasets它说我可以重复使用具有不同标题的相同 csv 文件——一次用于节点,一次用于关系。我低估了我使用的数据的 1-n (ness),导致 ID 上有很多重复。那个阶段基本上几乎都花在尝试排序和重复数据删除上。重新处理我的查询以提取拆分为节点和 rels 文件的数据,解决了该问题。感谢您查看这个!

所以基本上,理想情况下,每种类型的节点总是有单独的文件,而 rel 会给出最快的结果(至少在我的测试中)。

关于neo4j - 使用 Neo4j 导入工具在 Neo4j 中导入大型数据集需要很长时间(> 12 小时),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33711258/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com