Сбой в подсчете Neo4j BatchInserter, как я могу это сделать?

#neo4j

#neo4j

Вопрос:

Я использую следующий код для пакетной вставки данных в базу данных neo4j, но после запуска кода шифр «match (n) return count (n)» возвращает 0. Я пробовал много раз, но безуспешно, вы можете мне помочь? Большое спасибо!

 int denseNodeThreshold = GraphDatabaseSettings.dense_node_threshold.defaultValue();
    DatabaseLayout tempStoreDir = ((GraphDatabaseAPI)graphDb).databaseLayout();
    final FileSystemAbstraction fileSystem = new DefaultFileSystemAbstraction();
    batchInserter = BatchInserters.inserter(tempStoreDir, fileSystem, configuration(denseNodeThreshold));
    batchInserter.createDeferredSchemaIndex(personLabel).on("name").create();
    final ArrayList<Long> nodeIds = new ArrayList<>();
    //没有索引,通过Neo4j Desktop打开左侧没有 Node Labels和Relationship Types,有索引的情况下,count为0
    for(int i=0; i<1e5; i  ){
        Map<String, Object> properties = new HashMap<>();
        properties.put( "name", UUID.randomUUID().toString() );
        long nodeId = batchInserter.createNode( properties, personLabel );
        nodeIds.add(nodeId);
    }
    final Random random = new Random();
    for(int i=0; i<1e3; i  ){
        Long from = nodeIds.get((random.nextInt() % nodeIds.size()   nodeIds.size()) % nodeIds.size());
        Long to = nodeIds.get((random.nextInt() % nodeIds.size()   nodeIds.size()) % nodeIds.size());
        batchInserter.createRelationship( from, to, knows, null );
    }
 

Ответ №1:

Добро пожаловать!

Вы не можете использовать сервер в процессе, поскольку его файлы удаляются после каждого завершения работы, что объясняет, почему при перезапуске счетчик всегда равен 0.

Кроме того, вы должны закрыть блок BatchInserter с помощью попытки с ресурсами, чтобы убедиться, что изменения будут сброшены, как только вы закончите создание узлов и связей:

 try (BatchInserter batchInserter = BatchInserters.inserter(tempStoreDir, fileSystem, configuration(denseNodeThreshold))) {
   // [...]
}
 

Комментарии:

1. Большое спасибо. Я изменил код и запустил его по-своему. Он по-прежнему считает сбой.

2. Код можно найти здесь. github.com/pxfoost/neo4j-demo/blob/master/neo4j-demo/src/main /…