在将批量加载到Neo4j 2.2.0-RC1中时,我遇到了一些奇怪的问题。我正在尝试导入10个不同的节点集(用于不同的标签)以及12个关系文件。数据集大小不同 - 某些节点类型有大约200-300k记录,有些小(50-100条记录)。对于大多数节点类型,我有一个单独的文件,带有标题和单独的文件,每个集合都有数据(数据是从数据库生成的,我希望能够重新生成转储文件,而不必担心准备:ID列,描述数据类型等。)
我多次重新运行导入任务(使用选项 - 处理器1 --stacktrace)并且我不断得到不同的错误(实际数据集中没有一次更改)这让我觉得它可能是某种东西并发相关。有时导入只会挂起这样的消息:
Nodes
[>:36.75 MB/s------------------------|*PROPERTIES-----------------------------------------|NOD|] 0
在大多数情况下,它会因为下面的错误而崩溃,除了它管理导入的节点数量不同于运行运行。
[>:27.23 MB/s-------------|*PROPERTIES--------------------------|NO|v:19.62 MB/s---------------]100kImport error: Panic called, so exiting
java.lang.RuntimeException: Panic called, so exiting
at org.neo4j.unsafe.impl.batchimport.staging.StageExecution.stillExecuting(StageExecution.java:63)
at org.neo4j.unsafe.impl.batchimport.staging.ExecutionSupervisor.anyStillExecuting(ExecutionSupervisor.java:79)
at org.neo4j.unsafe.impl.batchimport.staging.ExecutionSupervisor.finishAwareSleep(ExecutionSupervisor.java:102)
at org.neo4j.unsafe.impl.batchimport.staging.ExecutionSupervisor.supervise(ExecutionSupervisor.java:64)
at org.neo4j.unsafe.impl.batchimport.staging.ExecutionSupervisors.superviseDynamicExecution(ExecutionSupervisors.java:65)
at org.neo4j.unsafe.impl.batchimport.ParallelBatchImporter.executeStages(ParallelBatchImporter.java:226)
at org.neo4j.unsafe.impl.batchimport.ParallelBatchImporter.doImport(ParallelBatchImporter.java:151)
at org.neo4j.tooling.ImportTool.main(ImportTool.java:263)
Caused by: java.lang.RuntimeException: Panic called, so exiting
at org.neo4j.unsafe.impl.batchimport.staging.AbstractStep.assertHealthy(AbstractStep.java:189)
at org.neo4j.unsafe.impl.batchimport.staging.ProducerStep.process(ProducerStep.java:77)
at org.neo4j.unsafe.impl.batchimport.staging.ProducerStep$1.run(ProducerStep.java:54)
Caused by: java.lang.IllegalStateException: Nodes for any specific group must be added in sequence before adding nodes for any other group
at org.neo4j.unsafe.impl.batchimport.cache.idmapping.string.EncodingIdMapper.put(EncodingIdMapper.java:137)
at org.neo4j.unsafe.impl.batchimport.NodeEncoderStep.process(NodeEncoderStep.java:76)
at org.neo4j.unsafe.impl.batchimport.NodeEncoderStep.process(NodeEncoderStep.java:41)
at org.neo4j.unsafe.impl.batchimport.staging.ExecutorServiceStep$2.call(ExecutorServiceStep.java:96)
at org.neo4j.unsafe.impl.batchimport.staging.ExecutorServiceStep$2.call(ExecutorServiceStep.java:87)
at org.neo4j.unsafe.impl.batchimport.executor.DynamicTaskExecutor$Processor.run(DynamicTaskExecutor.java:217)
我设法成功运行了一次,这似乎意味着某种计时问题正在发挥作用。
不幸的是,我无法提供数据集,因为它们包含机密数据。
最奇怪的是,如果我将负载分成2个不同的集合(数据集几乎是单独的子图,它们只有2个共同关系)那么一切正常(因此不太可能与数据相关),但是如果我将它们全部放入一个命令中,即使只加载节点也不起作用。而且因为无法强制加载到现有数据库中,所以不能选择以两个步骤加载它。
1)这是一个已知问题,如果是,我可以遵循修正/问题的任何ETA吗?
2)如果没有,是否有任何疑难解答我可以做到底部?目标数据库目录中的messages.log文件包含非常少的输出,如果我能得到更多关于出错的详细信息,那就太好了。
答案 0 :(得分:0)
我发现了这个问题。感谢您的报告/询问。下一个版本将包含此修复程序。我看到了导入工具的另一组集成测试。我提供了一旦进入就提交的链接。