【问题标题】:Neo4j batch importer NotFoundExceptionNeo4j 批量导入器 NotFoundException
【发布时间】:2014-11-30 12:02:10
【问题描述】:

在使用batch importer 读取大型节点和关系文件时,我一直遇到 NotFoundException。我之前已经成功地将导入器用于更大的数据集,但我已经重写了生成这两个文件的方式,我正试图弄清楚为什么它现在会引发错误。

问题

似乎读取了nodes文件,然后在rels文件开头附近抛出了一个错误,说明找不到node。我相信这是因为它并没有真正导入所有节点。它报告只导入了 nodes.tsv 中的一半节点(总共 4.6m 中的 2.1m)。

我检查过的内容:

  1. nodes.tsv 中的节点编号是连续的(0 到 ~4.5m)
  2. 引发异常的节点出现在两个文件中(包括作为 rels.tsv 中的源和目标)
  3. 我可以使用相同的 tsv 生成器脚本成功导入较小的数据子集(约 80k 个节点)
  4. 即使关系未按目标排序(仅在源上),较小的子集也不会引发此异常

插入命令:

./import.sh wiki.db nodes.tsv rels.tsv

错误信息

Using Existing Configuration File
.....................
Importing 2129648 Nodes took 6400 seconds 

Total import time: 6404 seconds 

Exception in thread "main" org.neo4j.graphdb.NotFoundException: id=3608148
        at org.neo4j.unsafe.batchinsert.BatchInserterImpl.getNodeRecord(BatchInserterImpl
.java:1215)
        at org.neo4j.unsafe.batchinsert.BatchInserterImpl.createRelationship(BatchInserte
rImpl.java:777)
        at org.neo4j.batchimport.Importer.importRelationships(Importer.java:154)
        at org.neo4j.batchimport.Importer.doImport(Importer.java:232)
        at org.neo4j.batchimport.Importer.main(Importer.java:83)

文件

nodes.tsv(4578730 行)

node    name    l:label degrees
0   Stroud_railway_station  Page    21
1   ATP–ADP_translocase Page    38
2   Pedro_Hernández_Martínez    Page    12
3   Christopher_Lowther Page    4
4   Cloncurry_River Page    10
5   Neil_Kinnock    Page    147
6   Free_agent_(business)   Page    10
7   Christian_Hilt  Page    27
8   2009_Riviera_di_Rimini_Challenger   Page    27

rels.tsv(113322480 行)

start   end type
0   3608148 LINKS_TO
0   870126  LINKS_TO
0   1516248 LINKS_TO
0   3493391 LINKS_TO
0   3034096 LINKS_TO
0   1421544 LINKS_TO
0   2808745 LINKS_TO
0   1872783 LINKS_TO
0   1673612 LINKS_TO

【问题讨论】:

    标签: neo4j


    【解决方案1】:

    嗯,您的 CSV 文件似乎有问题,您是否尝试在其上运行 CSVKit 或类似文件?

    也许您可以通过二等分 nodes.csv 并找到违规行来缩小问题范围?

    还可以通过在 batch.properties 中启用引号来尝试使用 opencsv 解析器

    https://github.com/jexp/batch-import/tree/20#csv-experimental

    batch_import.csv.quotes=true

    或将其翻转为假。也许您在文本中使用了单引号?如果是,请引用它。

    【讨论】:

    • batch_import.csv.quotes=true 解决了这个问题。大文件中一定有杂散的双引号,而不是较小的子集。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-26
    • 2017-06-05
    • 2014-07-31
    相关资源
    最近更新 更多