Neo4j批量导入器NotFoundException

时间:2014-11-28 19:07:18

标签: neo4j

使用batch importer读取大型节点和关系文件时,我一直遇到NotFoundException。我之前使用更大的数据集成功使用了导入器,但我已经重写了生成这两个文件的方式,并且我试图找出它为什么会抛出错误。

问题

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

我检查过的事情:

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

    ./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
    

1 个答案:

答案 0 :(得分:0)

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

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

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

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

batch_import.csv.quotes =真

或将其翻转为假。也许你的文字中有两个我们的双引号?如果是,那么请引用它。