Gra*_*eer 1 batch-processing neo4j maven
我想向Neo4j插入数十亿个节点和关系。尽管我有16GB的RAM,但由于工作内存已超载,浏览器(Chrome)在30分钟后取消了“ LOAD CSV”的使用。
显然,可以使用批处理导入器将大型数据集导入Neo4j(文档和下载,Linux解释)。
要简单地使用它(不需要source / git / maven):
1. download 2.2 zip
2. unzip
3. run import.sh test.db nodes.csv rels.csv (on Windows: import.bat)
4. after the import point your /path/to/neo4j/conf/neo4j-server.properties
to this test.db directory, or copy the data over to your server cp -r
test.db/* /path/to/neo4j/data/graph.db/
You provide one tab separated csv file for nodes and one for
relationships (optionally more for indexes)
Run Code Online (Sandbox Code Playgroud)
我很难在Windows上使用该插件。在Rik Van Bruggen的Linux视频中(上面的链接),他提到“批处理导入程序的安装”。
我解压缩了文件“ download 2.2 zip”。我在另一个文件夹中有CSV文件。如何使用Windows文档中提到的“ import.bat”命令?在cmd中找不到命令...
在使用该工具处理庞大的数据集之前,我可以向您推荐一些我刚刚学会的在几分钟之内导入数百万个节点的东西(适用于Windows的Neo4j社区版)。
关于Neo4j导入提示:
不要使用Web界面导入如此大的数据集,内存过载是不可避免的。
相反,可以使用编程语言与Neo4j进行交互(我最近使用了官方的Python模块,这只是为了学习,但是您可以使用陈旧的Java来做同样的事情)。
使用之前LOAD CSV,请记住编写USING PERIODIC COMMIT说明,以便每次迭代导入大数据集。
从CSV导入关系之前,请记住将其CREATE CONSTRAINT ON <...> ASSERT <...> IS UNIQUE用于标签的键属性。这将对人际关系的建立产生巨大影响。
使用MATCH(...),而不CREATE(...)用于关系过程。它将避免重复。
关于Neo4j性能:
首先:阅读官方 Neo4j页面以调整性能:https : //neo4j.com/docs/operations-manual/current/performance/
为Windows机器设置适当的内存配置:如有必要,手动配置dbms.memory.pagecache.size参数(在neo4j.conf文件中)。
请记住:Java虚拟机不是一个黑匣子;您可以针对应用程序专门提高其性能(编辑neo4j-community.vmoptions文件)。例如,您可以设置JVM的最大内存使用量(-Xmx参数),也可以将-XX:+UseG1GC参数设置为使用G1垃圾收集器(高性能,由Oracle建议用于生产环境)(https://docs.oracle.com /cd/E40972_01/doc.70/e40973/cnf_jvmgc.htm#autoId0)
我将发布用于配置的我的neo4j.conf自定义行(仅供参考,请注意,这可能是您应用程序的错误设置):
dbms.memory.pagecache.size=3g
dbms.jvm.additional=-XX:+UseG1GC
dbms.jvm.additional=-XX:-OmitStackTraceInFastThrow
dbms.jvm.additional=-XX:+AlwaysPreTouch
dbms.jvm.additional=-XX:+UnlockExperimentalVMOptions
dbms.jvm.additional=-XX:+TrustFinalNonStaticFields
dbms.jvm.additional=-XX:+DisableExplicitGC
Run Code Online (Sandbox Code Playgroud)
我的neo4j-community.vmoptions自定义行(同样,仅供参考):
-Xmx1024m
-XX:+UseG1GC
-OmitStackTraceInFastThrow
-XX:+AlwaysPreTouch
-XX:+UnlockExperimentalVMOptions
-XX:+TrustFinalNonStaticFields
-XX:+DisableExplicitGC
Run Code Online (Sandbox Code Playgroud)
我的测试机器是一台性能不佳的笔记本电脑,配备Core i3(双核),8GB RAM,Windows 10和Neo4j 3.2.1 Community Edition。
我能够在不到3分钟的时间内导入700万个节点,并在不到5分钟的时间内导入350万个关系(无递归关系)。
在功能更强大的机器上,通过特定的精心设置,Neo4j可以做得更好。希望能帮助到你。
| 归档时间: |
|
| 查看次数: |
996 次 |
| 最近记录: |