2016-06-05 3 views
0

Im пытается сделать импорт потокового в Neo4j и я бег в отказ от ошибки памяти (и последующей аварию) со следующим следом:Neo4j ошибка импорта памяти потокового

2016-06-05 03: 51: 35.218 + 0000 INFO [onkitlpLogPruningImpl] Лог-поворот [5]: Запуск обрезки журнала. 2016-06-05 03: 51: 35.218 + 0000 INFO [o.n.k.i.t.l.p.LogPruningImpl] Вращение журнала [5]: завершение журнала. 2016-06-05 03: 53: 58.140 + 0000 INFO [onkiaisOnlineIndexSamplingJob] Сэмплированный индекс: Узел (NodeId) с 415290 уникальными значениями в образце среднего размера 415290, взятый из индекса, содержащего 415290 записей 2016-06-05 03:56 : 37.803 + 0000 INFO [onkitlcCheckPointerImpl] Check Pointing, инициированный планировщиком для порогового значения времени [1573526]: начальная контрольная точка ... 2016-06-05 03: 56: 37.811 + 0000 INFO [onkitlcCheckPointerImpl] Check Pointing, инициированное планировщиком для порога времени [1573526]: запуск магазина flush ... 2016-06-05 03: 56: 38.019 + 0000 INFO [onkiscCountsTracker] О поворотном хранилище счетчиков по транзакции 1573543 - [/ mnt/graph/neo4j/data/database/graph.db/neostore.counts.db.a], из [/mnt/graph/neo4j/data/databases/graph.db/neostore.counts.db.b]. 2016-06-05 03: 56: 38.020 + 0000 INFO [onkiscCountsTracker] Успешно повернутое хранилище счетов по транзакции 1573543 - [/mnt/graph/neo4j/data/databases/graph.db/neostore.counts.db.a] , из [/mnt/graph/neo4j/data/databases/graph.db/neostore.counts.db.b].-06-05 03: 56: 38.982 + 0000 INFO [onkitlcCheckPointerImpl] Check Pointing, вызванный планировщиком для порогового значения времени [1573526]: Сохраненный флеш завершен 2016-06-05 03: 56: 38.982 + 0000 INFO [onkitlcCheckPointerImpl ] Check Pointing, инициированный планировщиком для порогового значения времени [1573526]: запуск добавления записи контрольной точки в журнал tx ... 2016-06-05 03: 56: 38.987 + 0000 INFO [onkitlcCheckPointerImpl] Check Pointing, инициированный планировщиком для времени порог [1573526]: добавлено добавление записи контрольной точки в завершенный протокол tx. 2016-06-05 03: 56: 38.987 + 0000 INFO [onkitlcCheckPointerImpl] Check Pointing, инициированный планировщиком для порогового значения времени [1573526]: Check pointing завершен 2016- 06-05 03: 56: 38.987 + 0000 INFO [onkitlpLogPruningImpl] Вращение журнала [5]: Запуск обрезки журнала. 2016-06-05 03: 56: 38.993 + 0000 INFO [o.n.k.i.t.l.p.LogPruningImpl] Вращение журнала [5]: завершение журнала. 2016-06-05 03: 59: 50.436 + 0000 WARN [o.n.k.i.c.MonitorGc] Монитор GC: потоки приложений заблокированы на 1123 мс.

Im неспособность получить к корню причину этой ошибки памяти. Кто-нибудь может мне помочь?

EDIT: Вот что я сделал:

driver = GraphDatabase.driver("bolt://localhost", auth=basic_auth("__", "__")) 
session = driver.session() 

with open("__.txt", "rb") as csvfile: 
    reader = csv.reader(csvfile, delimiter='\t') 
    count = 0 
    for row in reader: 
     count = count + 1 
     tx = session.begin_transaction() 
     statement = "MERGE (a:Node {NodeId:" + row[0].strip() + " })" 
     statement += " MERGE (b:Node {NodeId:" + row[1].strip() + " })" 
     statement += " MERGE (a)-[:Connection]-(b)" 
     tx.run(statement) 
     tx.commit() 

session.close() 
+0

Можете ли вы поместить то, что вы сделали до сих пор? –

+0

предоставленный вами фрагмент журнала не показывает ошибки вообще. На стороне примечание: вы должны использовать параметры в своем Cypher вместо конкатенации строк. –

+0

Я перезапустил код, и я вообще не вижу никакой ошибки, просто ошибка сегментации. – ranterina

ответ

0
  1. параметры используют не строковое замещение
  2. вы уверены, что у вас есть индекс или ограничение для `: Node (NodeId)` `
  3. вы должны либо обернуть несколько операторов (позволяет сказать, что от 1000 до 50k) в одной сделке
  4. или не нужно использовать транзакции на всех
+0

Идея состояла в том, чтобы имитировать потоковый импорт. Я создал индекс. Я просто хочу знать, почему/где так много памяти используется в таком сценарии. – ranterina

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