Hallo Ich erhalte den folgenden Fehler beim Versuch, Knoten und Beziehungen zu erstellen/zusammenführen. Es passiert nicht immer, aber es kommt hin und wieder vor.CypherError beim Erstellen/Zusammenführen von Graphen mit Neo4j-Python Connector
CypherError: An unexpected failure occurred, see details in the database logs, reference number eaf50bff-deca-4055-9450-6a76c31534e4.
Dies ist die Traceback:
---------------------------------------------------------------------------
CypherError Traceback (most recent call last)
<ipython-input-21-9700f3a5d3fa> in <module>()
7 tx.success = True
8 #tx.close()
----> 9 session.close()
/databricks/python/local/lib/python2.7/site-packages/neo4j/v1/session.pyc in close(self)
522 """
523 if self.last_result:
--> 524 self.last_result.buffer()
525 if self.transaction:
526 self.transaction.close()
/databricks/python/local/lib/python2.7/site-packages/neo4j/v1/session.pyc in buffer(self)
246 if self.connection and not self.connection.closed:
247 while not self._consumed:
--> 248 self.connection.fetch()
249 self.connection = None
250
für My Code erstellen/Merge ist dies:
for chunk in chunk_list:
with session.begin_transaction() as tx:
for record in chunk:
tx.run("MERGE (source:UID {userid : {m}, timestamp: {a}})"
"MERGE (target:UID {userid : {n}, timestamp: {a}})"
"MERGE (source)-[:HasConnection]-(target)", {"m": record.source, "n": record.target, "a": record.unix_timestamp_s})
tx.success = True
#tx.close()
session.close()
chunk_list eine Liste mit mehreren Listen von Datensätzen ist. Jede der Listen in chunk_list hat mehrere Zeilen (ca. 10000) und jede Zeile enthält drei Spalten, Quelle, Ziel und Zeitstempel.
Für jede Liste innerhalb von chunk_list öffnen wir eine Sitzung, führen die Zusammenführungsoperationen durch und schließen dann die Sitzung.
Das Problem beginnt, wenn der Graph mehr als 10 Millionen Knoten überschreitet. Sagen wir für Tag 1, dass die chunk_list 4 Millionen Zeilen hat, es würde gut funktionieren, für Tag 2, wenn die chunk_list 4 Millionen Zeilen hat, würde es auch gut funktionieren. Aber wenn am dritten Tag 3 Millionen Zeilen vorhanden sind und die Gesamtanzahl der Knoten im Neo4j-Diagramm mehr als 10 Millionen beträgt, dann beginnt das Problem.
Da Sie zusammenführen: UID-Knoten mit beiden Benutzer-ID und Zeitstempel, bin ich richtig, dass die Kombination userid + timestamp der eindeutige Nachschlageschlüssel zu a: UID, dh es kann mehrere sein: UIDs mit der gleichen Benutzer-ID aber unterschiedlich Zeitstempel? Oder ist userid der eindeutige Suchschlüssel und Sie versuchen, die Zeitstempel zu aktualisieren und eine Verbindung zu erstellen? – InverseFalcon
Es sollte dieselbe Benutzer-ID sein, aber der Zeitstempel ändert sich während der Zusammenführung. @InverseFalcon – sjishan