如何将大规模数据导入Neo4j_树上的疯子^的博客-CSDN博客


本站和网页 https://blog.csdn.net/xingxiupaioxue/article/details/71747284 的作者无关,不对其内容负责。快照谨为网络故障时之索引,不代表被搜索网站的即时页面。

如何将大规模数据导入Neo4j_树上的疯子^的博客-CSDN博客
如何将大规模数据导入Neo4j
树上的疯子^
于 2017-05-12 16:49:37 发布
28285
收藏
37
分类专栏:
sql
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/xingxiupaioxue/article/details/71747284
版权
sql
专栏收录该内容
111 篇文章
0 订阅
订阅专栏
如何将大规模数据导入Neo4j
项目需要基于Neo4j开发,由于数据量较大(数千万节点),因此对当前数据插入的方法进行了分析和对比。
常见数据插入方式概览
Neo4j Version Language Driver Community 3.0.2 Python neo4j-driver 1.0.0
目前主要有以下几种数据插入方式:
Cypher CREATE 语句,为每一条数据写一个CREATECypher LOAD CSV 语句,将数据转成CSV格式,通过LOAD CSV读取数据。官方提供的Java API —— Batch Inserter大牛编写的 Batch Import 工具官方提供的 neo4j-import 工具
这些工具有什么不同呢?速度如何?适用的场景分别是什么?我这里根据我个人理解,粗略地给出了一个结果:
  CREATE语句 LOAD CSV语句 Batch Inserter Batch Import Neo4j-import 适用场景 1 ~ 1w nodes 1w ~ 10 w nodes 千万以上 nodes 千万以上 nodes 千万以上 nodes 速度 很慢 (1000 nodes/s) 一般 (5000 nodes/s) 非常快 (数万 nodes/s) 非常快 (数万 nodes/s) 非常快 (数万 nodes/s) 优点 使用方便,可实时插入。 使用方便,可以加载本地/远程CSV;可实时插入。 速度相比于前两个,有数量级的提升 基于Batch Inserter,可以直接运行编译好的jar包;可以在已存在的数据库中导入数据 官方出品,比Batch Import占用更少的资源 缺点 速度慢 需要将数据转换成CSV 需要转成CSV;只能在JAVA中使用;且插入时必须停止neo4j 需要转成CSV;必须停止neo4j 需要转成CSV;必须停止neo4j;只能生成新的数据库,而不能在已存在的数据库中插入数据。
速度测试
下面是我自己做的一些性能测试:
1. CREATE 语句
这里每1000条进行一次Transaction提交
CREATE (:label {property1:value, property2:value, property3:value} )
11.5w nodes 18.5w nodes 100 s 160 s
2. LOAD CSV 语句
using periodic commit 1000load csv from "file:///fscapture_screencapture_syscall.csv" as linecreate (:label {a:line[1], b:line[2], c:line[3], d:line[4], e:line[5], f:line[6], g:line[7], h:line[8], i:line[9], j:line[10]})
这里使用了语句USING PERIODIC COMMIT 1000,使得每1000行作为一次Transaction提交。
11.5w nodes 18.5w nodes 21 s 39 s
3. Batch Inserter、Batch Import、Neo4j-import
我只测试了Neo4j-import,没有测试Batch Inserter和Batch Import,但是我估计他们的内部实现差不多,速度也处于一个数量级别上,因此这里就一概而论了。
neo4j-import需要在Neo4j所在服务器执行,因此服务器的资源影响数据导入的性能,我这里为JVM分配了16G的heap资源,确保性能达到最好。
sudo ./bin/neo4j-import --into graph.db --nodes:label path_to_csv.csv
11.5w nodes 18.5w nodes 150w nodes + 1431w edges 3113w nodes + 7793w edges 3.4 s 3.8 s 26.5 s 3 m 48 s
结论
如果项目刚开始,想要将大量数据导入数据库,Neo4j-import是最好的选择。如果数据库已经投入使用,并且可以容忍Neo4j关闭一段时间,那么Batch Import是最好的选择,当然如果你想自己实现,那么你应该选择Batch Inserter如果数据库已经投入使用,且不能容忍Neo4j的临时关闭,那么LOAD CSV是最好的选择。最后,如果只是想插入少量的数据,且不怎么在乎实时性,那么请直接看Cypher语言。
其它的Tips
在LOAD CSV前面加上USING PERIODIC COMMIT 1000,1000表示每1000行的数据进行一次Transaction提交,提升性能。建立index可以使得查询性能得到巨大提升。如果不建立index,则需要对每个node的每一个属性进行遍历,所以比较慢。 并且index建立之后,新加入的数据都会自动编入到index中。 注意index是建立在label上的,不是在node上,所以一个node有多个label,需要对每一个label都建立index。
2016 年 06 月 03 日
树上的疯子^
关注
关注
14
点赞
37
收藏
打赏
评论
如何将大规模数据导入Neo4j
如何将大规模数据导入Neo4j项目需要基于Neo4j开发,由于数据量较大(数千万节点),因此对当前数据插入的方法进行了分析和对比。常见数据插入方式概览Neo4j VersionLanguage DriverCommunity 3.0.2Python neo4j-driver 1.0.0目前主要有以下
复制链接
扫一扫
专栏目录
neo4j常用的数据导入方式
好好学习,天天向上的博客
03-03
2075
目前常用的数据导入方式对比如下:
1、create语句
CREATE (:label {property1:value, property2:value, property3:value} )
2、load csv
导入的文件必须是csv文件,位置可以是本地的,或通过http、https、ftp等url指定位置。neo4j中关于导入文件的设置是dbms.security.allow_csv_import_from_file_urls,默认为true;而导入本地文件的位置通过dbms.directorie
neo4j中导入数据的两种常用方式(千万级和亿级)
阿黎逸阳的博客
06-29
1774
neo4j中快速导入csv数据的两种方式
评论 4
您还未登录,请先
登录
后发表或查看评论
Py2neo:一种快速导入百万数据到Neo4j的方式
最新发布
今春一别难相逢
11-04
759
Py2neo是一个可以和Neo4j图数据库进行交互的python包。本文提供一个py2neo小技巧,通过简单的代码,能够以每秒1万节点/关系的速度快速将数据导入Neo4j。
Neo4j导入数据的5种方式详解配图
qianmojl的博客
04-27
9136
一、前言
Neo4j导入数据的方式有:
使用LOAD CSV导入数据
使用APOC导入数据
使用编程语言(Java,python,js,C#,Go)导入数据
使用neo4j-admin工具导入数据
使用应用导入数据
使用ETL工具导入数据
具体选择哪种导入方法取决于:
数据量大小
使用者对导入方法的轻松度感受
有多少时间来导入
各种导入方法的精力-效率图像如下图:
横坐标表示导入的效率,LOAD CSV导入比较慢,而neo4j-admin工具导入比较快。
纵坐标表示人耗费的精力,LOAD CSV比较
Neo4j 知识图谱系列(二):数据导入
AkiraC的博客
09-25
1696
上一段主要做一些基础铺垫,完成Neo4j的安装和基本操作命令。本段落主要实现通过导入数据建立图谱.
一、Neo4j导入数据的几种方式:
1、通过Cypher create 语句进行数据手工创建;
2、Cypther load csv语句,对csv格式的数据进行读取;
3、官方neo4j-import 工具, 目前被neo4j-admin import所替代;
4、batch-import 工具
以上的几种方式各有优劣,对于个人使用中小型数据进行尝试,在数据量和速度上,load和import应该都
【2021/8/29】Windows下Neo4j批量导入数据(最新教程)
风口IT猪的成长录
08-30
1940
Windows下Neo4j批量导入数据前言Neo4j批量导入数据1. 导入方式2. neo4j-admin import导入数据2.1 处理数据2.2 导入命令2.3. 导入数据2.4. 查看数据3. .bat批处理脚本3.1 新建文件夹3.2 新建.bat脚本文件3.3 修改配置文件3.4 启动Neo4j4. 后序
前言
图谱的最主要的存储方式,RDF和图数据库,RDF通常用于数据发布和学术上使用,图数据库更多为大数据量下的服务使用。
Neo4j作为图数据中使用最广泛的一种,安装简单,性能较好。
具体安装
MySQL load data 快速导入大批量数据
热门推荐
极乐谷2的专栏
04-04
3万+
MySQL load data 语句能快速将一个文本文件的内容导入到对应的数据库表中
使用neo4j_批量导入数据提速80%,不一样的Neo4j打开方式
weixin_39706441的博客
01-14
2111
Neo4j是由Java实现的开源NoSql图数据库,是图数据库中较为流行的一款。网易内部集群版本Neo4j提供了完整的数据库特性,包括ACID事务的支持、因果集群支持、备份/恢复与故障转移等。随着越来越多的业务使用Neo4j数据库,数据如何快速导入成为备受业务关心的问题。本文主要介绍Neo4j批量导入在线和离线数据的几种方法,常见问题,优缺点,以及适用场景等。最近整理了一些Java架构学习视频和大...
Neo4j入门(二)批量插入节点、关系
山阴少年
07-15
2894
  本文将介绍如何在Neo4j中批量插入节点、关系,提升图谱构建的效率。
  在讲解批量插入节点、关系前,我们需要了解下节点重复创建问题。
节点重复创建
  在Neo4j中,我们如果对同一个节点进行重复插入,则图谱中会存在多个重复节点,这是因为Neo4j本身自带一个自增id造成的。
  我们来创建name为Google、address为U.S.的节点。使用CQL语句如下:
create (company: Company{name: "Google", address: "U.S."});
create (
neo4j数据导入到MySQL,Neo4j--数据导入
weixin_42517963的博客
03-24
395
Cypher CREATE为每条数据写一个CREATE(或MERGE)CREATE(`0`:Student{name:"JM68"})-[:`friend` {from:'2013'}]->(`1`:Student{name:"XTT"})return `0`, `1`上例为创建两个节点,节点间关系为friend, 节点皆有name属性Cypher LOAD CSV将数据转为CSV导入Neo...
【知识图谱】Neo4j 导入数据构建知识图谱的三种方法
Nieson2012的专栏
10-30
9279
目录
Neo4j数据导入5种方式
1、使用Cypher语言创建
1.1 创建节点【create】
1.2 修改节点的属性
1.3创建带属性值的节点
1.4 创建节点间的关系
1.5 其他操作命令
1.6 cypher查询语言的使用规律
2、使用load csv导入数据
2.1构建容器(非必须)
2.2 导入节点csv文件
2.3 创建索引并删除重复节点
2.4 导入关...
neo4j 导入数据
weixin_43758551的博客
07-05
99
使用neo4j-import导入数据及关系
Neo4j中关于数据的导入和导出方法总结(二)
LP1325308489的博客
06-08
3660
数据的导出
一、使用neo4j-admin命令
数据备份:neo4j-admin dump --database=<database> --to=<destination-path>
示例:
$neo4j-home> bin/neo4j-admin dump --database=graph.db --to=/backups/graph.db/2016-10-02.dump
需要注意的是备份的数据库不能是正在使用中的,如果正在使用中需要先关闭使用
数据导出:neo4
neo4j 使用之数据导入初探
csl136520054的博客
11-16
2217
平台:windows10
neo4j下载安装(较为简单,不做赘述)参考:
数据导入:
一、通过csv文件导入:
导入关系:
LOAD CSV FROM "file:/index_rel.csv" AS row
MATCH (p:IndexWh),(o:IndexWh)
WHERE p.id = row[0] and o.id=row[1]
CREATE (p)-[r:IndexRel{type:row[2]}]->(o);
导入数据:
load csv from "file:///index_wh.
mysql导入数neo4j_图数据库Neo4j搭建以及大批量数据导入
weixin_39970994的博客
01-20
199
最近在搞风控相关的事情,有幸参与了Neo4j的搭建以及数据导入的过程。构建容器docker环境下安装:这里说明下,默认将容器的/data,/var/lib/neo4j/import目录映射到宿主机。/data存储的是数据,/var/lib/neo4j/import存储的是你想要导入数据的docker run \--publish=7474:7474 --publish=7687:7687 \--v...
开源通用中文知识图谱导入Neo4j
haiziccc的专栏
11-21
2212
前段时间思知发布了有史以来最为全面的中文知识图谱数据集(详见https://www.ownthink.com/、https://github.com/ownthink/KnowledgeGraphData),下载地址如下:
百度网盘(链接: https://pan.baidu.com/s/1LZjs9Dsta0yD9NH-1y0sAw 提取码: 3hpp )
注:解压密码是:https://w...
Neo4j批量导入大量csv数据
weixin_43342297的博客
07-22
846
背景本人在建立知识图谱的过程中需要导入23w条节点之间的关系,把csv放到import下之后就开始导入,导了一晚上没导完,这里说一下如何导入大量的csv文件
Neo4j数据导入-大量导入(含CSV)
Mrkaizi的博客
07-09
1167
如何将大规模数据导入Neo4j
项目需要基于Neo4j开发,由于数据量较大(数千万节点),因此对当前数据插入的方法进行了分析和对比。
我本地使用的Neo4j版本为:
可选方案
目前主要有以下几种数据插入方式:
Cypher CREATE 语句,为每一条数据写一个CREATE
Cypher LOAD CSV 语句,将数据转成CSV格式,通过LOAD CSV读取数据。
官方提供的Java API —— Batch Inserter
大牛编写的 Batch Import 工具
官方提供的 neo4j-impo
最全 Neo4j 可视化图形数据库的工具!
PUSHIAI的博客
08-06
2046
图形可视化工具的类别
在我们深入研究工具之前,了解现有工具的类别很重要。所有可视化工具包都是根据特定目的构建的,因此您必须确保工具的目的符合您的需要。
我将所有图形可视化工具分为四大类:
开发工具,帮助开发人员处理图表。
探索工具,帮助分析师探索数据关系。
分析工具,用于揭示趋势和差异。
报告工具,用于创建和组织数据报告。
1. Neo4j浏览器(开发工具)
该Neo4j的浏览器可能与Neo4j的工作时,你会碰到的第一件事情。作为数据库开发人员运行 Cypher 查询的工具,浏览器允.
“相关推荐”对你有帮助么?
非常没帮助
没帮助
一般
有帮助
非常有帮助
提交
©️2022 CSDN
皮肤主题:大白
设计师:CSDN官方博客
返回首页
树上的疯子^
CSDN认证博客专家
CSDN认证企业博客
码龄13年
暂无认证
675
原创
2万+
周排名
139万+
总排名
175万+
访问
等级
1万+
积分
198
粉丝
419
获赞
141
评论
990
收藏
私信
关注
热门文章
bigdecimal去除末尾多余的0 ,stripTrailingZeros()科学计数法解决
69235
postgresql 字符串转整数 int、integer
48348
Spring有哪些优点缺点
42592
No identifier specified for entity 错误
39590
ConcurrentHashMap 1.7和1.8区别
36484
分类专栏
IDE
98篇
maven
23篇
sql
111篇
java
210篇
漫谈
5篇
extjs
3篇
hibernate
6篇
jquery
7篇
jsp
12篇
spring
14篇
奇巧淫技
2篇
more thread
14篇
linux
23篇
springmvc springboot
21篇
internet
1篇
mybaties
28篇
webservice
8篇
jeecg
1篇
jms mq
3篇
httpclient
4篇
处理xml
1篇
nginx
4篇
poi excel
7篇
redis
9篇
swagger
3篇
pdf
1篇
大数据
2篇
jvm
6篇
netty
1篇
dubbo zk
3篇
css
1篇
最新评论
ConcurrentHashMap 1.7和1.8区别
aimsgmiss:
你这么卷吗
feign传递MultipartFile参数为空
陪你到永远:
好像最关键的就一个地方修改下就行,把feign调用的接口上方,加上 consumes = MediaType.MULTIPART_FORM_DATA_VALUE 就可以了,其他的不用改
两个sql语句查询出来的值相除
毕加思索|:
百度一下,你就抄抄
springboot读取redis发生java.lang.ClassCastException异常
我不配编程:
太厉害了,感谢大佬
springboot读取redis发生java.lang.ClassCastException异常
我不配编程:
太厉害了,感谢大佬
您愿意向朋友推荐“博客详情页”吗?
强烈不推荐
不推荐
一般般
推荐
强烈推荐
提交
最新文章
new JSONObject(true)
List map转json
eclipse安装成功但是编译失败
2022年14篇
2021年47篇
2020年113篇
2019年51篇
2018年78篇
2017年186篇
2016年119篇
2015年154篇
2014年9篇
2013年5篇
目录
目录
分类专栏
IDE
98篇
maven
23篇
sql
111篇
java
210篇
漫谈
5篇
extjs
3篇
hibernate
6篇
jquery
7篇
jsp
12篇
spring
14篇
奇巧淫技
2篇
more thread
14篇
linux
23篇
springmvc springboot
21篇
internet
1篇
mybaties
28篇
webservice
8篇
jeecg
1篇
jms mq
3篇
httpclient
4篇
处理xml
1篇
nginx
4篇
poi excel
7篇
redis
9篇
swagger
3篇
pdf
1篇
大数据
2篇
jvm
6篇
netty
1篇
dubbo zk
3篇
css
1篇
目录
评论 4
被折叠的 条评论
为什么被折叠?
到【灌水乐园】发言
查看更多评论
打赏作者
树上的疯子^
你的鼓励将是我创作的最大动力
¥2
¥4
¥6
¥10
¥20
输入1-500的整数
余额支付
(余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付
您的余额不足,请更换扫码支付或充值
打赏作者
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额
抵扣说明:
1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。 2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。
余额充值