【发布时间】:2015-03-19 20:03:22
【问题描述】:
我在使用批量加载到 Neo4j 2.2.0-RC1 时遇到了一些奇怪的问题。我正在尝试导入 10 个不同的节点集(用于不同的标签)以及 12 个关系文件。数据集的大小各不相同——一些节点类型有大约 200-300k 条记录,一些很小(50-100 条记录)。对于大多数节点类型,我有一个带有标题的单独文件和带有每个集合数据的单独文件(数据是从数据库生成的,我希望能够重新生成转储文件而不必担心准备 :ID 列,描述数据类型等)
我多次重新运行导入任务(使用选项 --processors 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) 这是一个已知问题吗?如果是,是否有任何关于我可以遵循的修复/问题的预计到达时间?
2) 如果没有,是否有任何故障排除我可以解决问题?目标数据库目录中的messages.log 文件包含非常少的输出,如果我能获得有关问题所在的更多详细信息,那就太好了。
【问题讨论】:
标签: neo4j