2016-05-03 3 views
2

Моим вопрос очень похож на этот: How to create unique nodes and relationships by csv file imported in neo4j? У меня есть текстовый файл с около 2,5 миллиона строк, что имеют две колонок, каждые из которых узловых идентификаторов:Создания уникального узла и отношения Neo4j над огромным набором данными

1234 345 
1234 568 
345 984 
... ... 

Каждая строка представляет собой отношение (так что 2,5 миллиона отношений): first_column nodeid-> FOLLOWS -> second_column nodeid. В этом файле содержится около 80 000 уникальных узлов.

Основываясь на приведенной выше ссылке, я сделал:

USING PERIODIC COMMIT 1000 
LOAD CSV FROM 'file:///home/user_name/Desktop/bigfile.csv' AS line FIELDTERMINATOR ' ' 
MERGE (n:Userid { id: toInt(line[0]) }) 
WITH line, n 
MERGE (m:Userid { id: toInt(line[1]) }) 
WITH m,n 
MERGE (n)-[:FOLLOWS]->(m) 

Я предполагаю, что этот код

  • создает узел п или т, если он не существует (и находит его, если он существует) и создает связь от n до m.
  • Если п или т существует и уже имеет много других краев (отношения), указывающий на и от других узлов, это было бы просто добавить еще один край от п до т (не создавая новый узел, когда он уже существует)

Мой главный вопрос: мне интересно, как сделать этот процесс быстрее. Это делается на Ubuntu, и я изменил значения от 512 до 2048 МБ для памяти в файле conf/neo4j-wrapper.conf. (максимум я могу увеличить на своей виртуальной машине)

Должен ли я попытаться использовать инструмент «Импорт»? на основе, например, на этом сайте, neo4j.com/developer/guide-import-csv/ под «Супер быстрым пакетным импортером для огромного Datasets»,

./bin/neo4j-import --into mydatabase.db --id-type INTEGER \ 
        --nodes allnodes.csv \ 
        --delimiter " " \ 
        --relationships:FOLLOWS bigfile.csv 

И сделать это, мне нужно переформатировать файлы, так что : allnodes.csv показывает

userID:ID(Userid) 
1234 
5678 
... 

И bigfile.csv показывает

:START_ID(Userid) :END_ID(Userid) 
1234     345 
1234     568 
345     984 
*Two columns delimited by space* 

И когда я запускаю этот импорт, я получаю эту ошибку:

Input error: Expected '--nodes' to have at least 1 valid item, but had 0 [] 
Caused by:Expected '--nodes' to have at least 1 valid item, but had 0 [] 
java.lang.IllegalArgumentException: Expected '--nodes' to have at least 1 valid item, but had 0 [] 

Как исправить эту ошибку? А для файлов csv я помещаю их в ту же папку, где я запускаю эту команду (папка neo4j)?

ответ

2

Возможно, у вашей командной строки неправильные пути для ваших двух файлов CSV.

+0

Да, это исправило проблему. Спасибо! – Tony

+0

Пожалуйста, не забывайте [Принять] (http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work) ответ, который лучше всего подходит для вас. – cybersam

Смежные вопросы