Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Neo4j导入工具碰撞过多_Java_Database_Import_Neo4j_Cypher - Fatal编程技术网

Java Neo4j导入工具碰撞过多

Java Neo4j导入工具碰撞过多,java,database,import,neo4j,cypher,Java,Database,Import,Neo4j,Cypher,我试图使用导入工具将一个~52GB的节点文件导入neo4j,我已经运行了两次,并尝试使用文件上的“uniq”Linux命令清除文件中的重复项 我在专用服务器上运行neo4j Ubuntu服务器16.04“Xenial Xerus”LTS 内存:64GB 硬盘驱动器:SoftRAID 3x2 TB服务器 处理器:英特尔至强E5-1620四核(4核)3.60 千兆赫 我的配置文件设置: dbms.memory.heap.initial_size=10G dbms.memory.heap.max

我试图使用导入工具将一个~52GB的节点文件导入neo4j,我已经运行了两次,并尝试使用文件上的“uniq”Linux命令清除文件中的重复项

我在专用服务器上运行neo4j

  • Ubuntu服务器16.04“Xenial Xerus”LTS
  • 内存:64GB
  • 硬盘驱动器:SoftRAID 3x2 TB服务器
  • 处理器:英特尔至强E5-1620四核(4核)3.60 千兆赫
我的配置文件设置:

  • dbms.memory.heap.initial_size=10G
  • dbms.memory.heap.max_size=20G
  • dbms.memory.pagecache.size=20G
使用中的导入命令:

neo4j管理导入--数据库instaGraphPostPurge.db--节点:用户“/home/headers/graph_header.csv,/home/instanet/postpurge/postniqnodes.net”--关系如下“/home/headers/graph\u relate\u following.csv、/home/instanet/postpurge/following/graph2.net、/home/instanet/postpurge/following/graph3.net、/home/instanet/postpurge/graph4.net、/home/instanet/postpurge/following/graph5.net”--关系:following“/home/headers/graph3.net”,/home/instanet/postpurge/followedBy/graph1.net、/home/instanet/postpurge/followedBy/graph2.net、/home/instanet/postpurge/followedBy/graph3.net、/home/instanet/postpurge/followedBy/graph4.net、/home/instanet/postpurge/followedBy/graph5.net”--分隔符选项卡--忽略重复节点

节点导入和排序似乎完成了,然后我得到

" java.lang.RuntimeException:org.neo4j.unsafe.impl.batchimport.input.InputException:冲突太多:232071971“

我不太确定问题出在哪里,我在节点文件中搜索了该ID,但似乎找不到它

我已经在导入后包含了输出

感谢您的帮助,提前谢谢

导入时间为15小时10米10秒79毫秒。 没有数据统计。 峰值内存使用率:18.65 GB

    ******** DETAILS 2018-06-15 05:17:41.913+0000 ********

    Nodes
    [*Nodes---------------------------------------------------------------------------------------]2.36B
    Memory usage: 18.65 GB
    I/O throughput: 79.33 MB/s
    VM stop-the-world time: 631ms
    Duration: 47m 48s 468ms
    Done batches: 236827

    Prepare node index
    [*DETECT--------------------------------------------------------------------------------------]6.96B
    Memory usage: 29.67 GB
    Duration: 14h 22m 16s 475ms
    Done batches: 696830

    Environment information:
      Free physical memory: 3.32 GB
      Max VM memory: 13.99 GB
      Free VM memory: 285.40 MB
      VM stop-the-world time: 631ms
      Duration: 15h 10m 4s 943ms
java.lang.RuntimeException:org.neo4j.unsafe.impl.batchimport.input.InputException:冲突太多:232071971 位于org.neo4j.unsafe.impl.batchimport.staging.AbstractStep.issuePanic(AbstractStep.java:150) 位于org.neo4j.unsafe.impl.batchimport.staging.AbstractStep.issuePanic(AbstractStep.java:142) 在org.neo4j.unsafe.impl.batchimport.staging.LonelyProcessingStep.lambda$receive$0(LonelyProcessingStep.java:58) 运行(Thread.java:748) 原因:org.neo4j.unsafe.impl.batchimport.input.InputException:冲突太多:232071971 位于org.neo4j.unsafe.impl.batchimport.cache.idmapping.string.EncodingIdMapper.detectAndMarkCollisions(EncodingIdMapper.java:451) 在org.neo4j.unsafe.impl.batchimport.cache.idmapping.string.EncodingIdMapper.prepare(EncodingIdMapper.java:234)上 位于org.neo4j.unsafe.impl.batchimport.IdMapperPreparationStep.process(IdMapperPreparationStep.java:56) 在org.neo4j.unsafe.impl.batchimport.staging.LonelyProcessingStep.lambda$receive$0(LonelyProcessingStep.java:53) …还有一个 输入数据错误 原因:碰撞过多:232071971

警告导入失败。/home/databases/instaGraphPostPurge.db中的存储文件保持原样,尽管它们可能处于不可用状态。在这些存储文件上启动数据库可能会失败或观察到不一致的记录,因此启动或手动删除存储将自担风险 org.neo4j.unsafe.impl.batchimport.input.InputException:冲突太多:232071971 位于org.neo4j.unsafe.impl.batchimport.cache.idmapping.string.EncodingIdMapper.detectAndMarkCollisions(EncodingIdMapper.java:451) 在org.neo4j.unsafe.impl.batchimport.cache.idmapping.string.EncodingIdMapper.prepare(EncodingIdMapper.java:234)上 位于org.neo4j.unsafe.impl.batchimport.IdMapperPreparationStep.process(IdMapperPreparationStep.java:56) 在org.neo4j.unsafe.impl.batchimport.staging.LonelyProcessingStep.lambda$receive$0(LonelyProcessingStep.java:53) 运行(Thread.java:748) 意外错误:碰撞太多:232071971


太多冲突:232071971
告诉您冲突的数量是
232071971
,这对于导入程序来说太多了,无法处理。现在,在3.4中,这不再是事实,在3.4中,有了冲突管理的改进,因此该限制已经取消,但是导入程序出于某种原因仍然进行此检查

现在,这是可以修复的,但是>23亿次冲突是相当多的冲突,并且指向一些非常脏或未完全清理的输入数据。删除此检查可以使其正常工作,但存储这些冲突的内存量也可能非常大,因此无论如何,在尝试分配该内存时,导入可能仍然失败


您所能做的最好的事情就是以某种方式减少输入中重复节点ID的数量。

供您参考:巨大的导入时间:15h 10m!如果是graph db初始化,另一个解决方案是使用BatchInserter,它可以直接处理db文件,而且速度非常快。但您需要用Java编写一些代码。下面是一些示例(但我不知道这些示例是否基于Neo4j的最新版本)你能分享你的头和每个文件的前几行吗?导入命令的完整输出你能结合这两个关系吗?我不知道oyu可以在命令行上有多个相同类型的命令我不得不删除更多的重复项,我的数据最终不是我认为的格式,而且必须进行排序,然后删除重复项。谢谢您的帮助