2015-03-31 4 views
3

Когда я печатаю этот запрос в оболочке Neo4j:Cypher запрос дает java.lang.OutOfMemoryError

MATCH (b:PHARMA)-[r:HAS_DONATED]->(a:DOCTOR) 
WITH a,r,b, r.DECL_AVANT_MONTANT as total, COUNT(r) as count 
MERGE (b)-[:RELATIONSHIP { 
totalDECL: total, 
numberDECL: count 
}]->(a); 

Я получаю это сообщение:

Error occured in server thread; nested exception is: java.lang.OutOfMemoryError: Java heap space 

Любая идея о том, как обойти это?

+0

В чем смысл 'COUNT (r) как count'? Результат будет всегда ** 1 **, потому что вы используете 'r' в' WITH'. –

+0

Узлы PHARMA и узлы DOCTOR могут иметь несколько отношений HAS_DONATED. Я пытаюсь создать одно отношение, которое суммирует его. Он должен содержать количество отношений HAS_DONATED и сумму суммы пожертвований. Это ясно? – jvilledieu

+2

Если вы запустите этот запрос: 'MATCH (b: PHARMA) - [r: HAS_DONATED] -> (a: DOCTOR) С a, r, b, r.DECL_AVANT_MONTANT как итого, COUNT (r) в качестве счетчика RETURN count (*) 'вы увидите, что вы будете MERGE _a lot_ данных, поэтому размер вашей транзакции заполняет всю доступную кучу и взорвется. –

ответ

2

Я решил свою проблему с помощью этого запроса:

USING PERIODIC COMMIT 2000 
LOAD CSV WITH HEADERS FROM "file:c:/sunshine.anonymes.csv" AS line 
FIELDTERMINATOR ',' 
MATCH (b:DOCTOR {ID: line.BENEF_PS_ID}) 
MATCH (a:PHARMA {NAME: line.LABO}) 
MERGE (a)-[r:IS_LINKED_TO]->(b) 
ON CREATE SET r.numberDECL = 1, r.totalDECL = toINT(line.DECL_AVANT_MONTANT) 
ON MATCH SET r.numberDECL = r.numberDECL +1, r.totalDECL = line.totalDECL + r.totalDECL; 

В основном, я создаю связь во время импорта CSV и обновления свойств в течение процесс.

Благодарим вас за помощь!

1

Я не знаю, поможет ли это. Но вот отремонтировать Cypher запрос для Вашего случая:

MATCH (b:PHARMA)-[r:HAS_DONATED]->(a:DOCTOR)  
WITH a, b, SUM(r.DECL_AVANT_MONTANT) as total, COUNT(r) as count 
MERGE (b)-[:RELATIONSHIP { 
totalDECL: total, 
numberDECL: count 
}]->(a); 
+0

Я собираюсь попробовать! – jvilledieu

+0

По-прежнему такая же ошибка. – jvilledieu

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