求助,使用neo4j导入数据遇到数据库崩溃的问题
发布于 14 天前 作者 codelone 115 次浏览 来自 问答

我最开始使用了neo4j 3.4社区版,需要将数仓数据导入到neo4j,数仓组件为impala,内存分配为 heap.initial_size 6G,heap.max_size 6G,pagecache.size 20G 配置文件基本为默认的 我采用的方法是给neo4j的plugins放置impala的连接jar包,然后通过apoc库的load.jdbc方法获取数据,再使用 apoc.periodic.iterate迭代导入数据 示例如下:

CALL apoc.periodic.iterate(“CALL apoc.load.jdbc( ‘jdbc:impala://xxxx:prot/data;’ ,‘select * from test’)” ,“merge (p:Node{pk_id:row.pk_id}) ON CREATE SET p.name=row.name,p.dt=row.dt ON MATCH SET p.name=row.name,p.dt=row.dt” ,{batchSize:50000,iterateList:true})

采用这种方式的好处就是非常方便,无需使用文件的导入方式 但是一旦数据量稍大一点,在单次查询导入几十万的情况下,就有可能发生如下错误, (没办法上传图片,我打出来报错的message )

javax.net.ssl.SSLException: Received close_notify during handshake

此时内存会占满,cpu会有百分之几百的使用率,然后browser连接断开,程序也无法连接 一旦出现该错误,cpu恢复正常,内存仍然占满,且数据库无法关闭,只能杀掉进程然后重启。 原本以为是版本或者是机器性能的问题,所以试用了3.5.5企业版,也换到了具有12cpu核心 250G内存的机器, 配置设置为 heap.initial_size 31G,heap.max_size 31G,pagecache.size 200G 的推荐配置 但是依然出现如上错误,查阅了相关的资料,仍没有好的解决办法,

请问这是什么原因造成的,导入数据的方式有没有其他更好的方案?

3 回复

使用 分批导入的方法。

@pangguoming 分批导入是什么意思,把数据分成多份,然后依次执行导入任务吗?

回到顶部