Проблема: Как эффективно загрузить в Neo4j ~ 8 ГБ данных,> 10 миллионов строк следующего формата. Я использую набор данных DocGraph, который показывает отношения между поставщиками Medicare. Набор данных - это CSV со столбцами:
From_ID, To_ID, Count_Patients, Count_Transacts, Avg_Wait, Stdv_Wait
From_ID означает идентификатор врача, делающего направление. To_ID - это врач, который получает направление. Последние четыре столбца являются свойствами отношений. Любой идентификатор в первом или втором столбце может появиться в любом столбце, поскольку поставщики могут иметь много связей в любом направлении.
Вот базовый запрос c, который я придумал (очень новый для Cypher, но adept at SQL):
LOAD CSV FROM "url"
CREATE (n:provider {NPI : line[0]})
WITH line, n
MERGE (m:provider {NPI : line[1]})
WITH m,n, line
MERGE (n)-[r:REFERRED {patients: line[2], transacts: line[3], avgdays: line[4], stdvdays: line[5]}]->(m)
Кажется, что он работает с небольшим подмножеством данных, но в прошлый раз, когда я пробовал его на полном наборе данных, он сломал мой neo4j, и он продолжал истекать, когда я пытался перезапустить поэтому мне пришлось прекратить работу моего экземпляра EC2 и начать с нуля.
Благодарим за любые советы и помощь в запросе Cypher. Кроме того, я планирую объединить эти данные с дополнительными данными Medicare с дополнительными свойствами об узлах, например, специальность врача, местоположение, имя и т. Д. c, поэтому дайте мне знать, как мне следует это учитывать.
Подробности экземпляра: Ubuntu 18.04, m5ad.large (2 vCPUS, 8 ГБ ОЗУ, 75 ГБ SSD)