2016-05-03 3 views
2

Meine Frage ist sehr ähnlich wie diese: How to create unique nodes and relationships by csv file imported in neo4j? ich mit rund 2,5 Millionen Zeilen eine Textdatei, die zwei Spalten, die jeweils ein Wesen Knoten ids:Erstellen von eindeutigen Knoten und Beziehung Neo4j über riesige Datenmenge

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

Jede Zeile repräsentiert eine Beziehung (also 2,5 Millionen Beziehungen): first_column nodeid-> FOLLOWS -> second_column nodeid. In dieser Datei befinden sich etwa 80.000 eindeutige Knoten.

Basierend auf den obigen Link, ich habe:

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) 

ich diesen Code

  • schafft Knoten n oder m gehe davon aus, wenn es nicht existiert (und findet es, wenn es vorhanden ist) und erstellt eine Beziehung von n zu m.
  • Wenn n oder m vorhanden ist und schon viele andere Kanten (Beziehungen), der auf und von anderen Knoten hat, diese von n bis m einem andere Kante nur hinzufügen würde (nicht einen völlig neuen Knoten erstellen, wenn es bereits vorhanden ist)

Meine Hauptfrage ist, ich frage mich, wie man diesen Prozess schneller machen kann. Dies wird auf Ubuntu getan, und ich änderte die Werte von 512 bis 2048 MB für Speicher in der conf/Neo4j-wrapper.conf Datei. (Maximal kann ich meine Virtual Machine erhöhen)

Sollte ich das Import-Tool versuchen zu tun? auf dieser Website basierend auf dem Beispiel, neo4j.com/developer/guide-import-csv/ unter „Super Fast Batch Importeur für große Datenmengen“,

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

Und dies zu tun, muß ich Dateien neu zu formatieren, so dass : allnodes.csv zeigt

userID:ID(Userid) 
1234 
5678 
... 

Und bigfile.csv zeigt

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

Und wenn ich diesen Import ausführen, bekomme ich diesen Fehler:

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 [] 

Wie behebe ich diesen Fehler? Und für die CSV-Dateien, lege ich sie in den gleichen Ordner, wo ich diesen Befehl (Neo4j-Ordner) ausführen?

Antwort

2

Ihre Kommandozeile hat wahrscheinlich die falschen Pfade für Ihre zwei CSV-Dateien.

+0

Yep, dass das Problem behoben. Vielen Dank! – Tony

+0

Bitte denken Sie daran, [Accept] (http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work) die Antwort, die für Sie am besten funktioniert. – cybersam