2014-10-13 1 views
1

Я недавно скачал neo4j 2.1.5. Я использую webadmin (т. Е. Интерфейс браузера). Теперь мне нужно скачать довольно большой набор данных, около 20 миллионов записей. Я смог прокормить 5 млн без проблем.neo4j webser не удалось пометить транзакцию только как откат

Однако я не могу сделать это с помощью более крупного (20 миллионов) набора данных. Я использую команду load csv с 1000 за фиксацию (но я пробовал 5, 10, 100, 10000, 100000). Я пробовал много разных настроек (cache_type = none, слабый, с использованием буферов os или с использованием собственного neo4j), но мне удалось получить только ошибки «Java Heap Space» или «Failed to not transaction only only rollback only». Я также пробовал использовать разные настройки для начального и максимального использования ram. Я попытался разделить файл на куски по 5 миллионов каждый, но когда я пытаюсь прокормить файл, я получаю ту же ошибку (пространство Java Heap).

Одна вещь, которую я замечаю, однако, когда я запускаю «free -h», секция кеша начинает быстро расти, а после 2,5 ГБ она выдает ошибку. Даже если я скажу neo4j не использовать буферы и кеши OS, я использую linux ubuntu, jdk 1.8 с 64 битами, 8 ГБ оперативной памяти на машине.

Я смог прокормить 20 миллионов записей на другой машине (OS X Mavericks, jdk 1.8 с 64-разрядным, 4-бит Ram на машине). Так что я удивляюсь, что пошло не так с Ubuntu? Кто-нибудь столкнулся с этой проблемой? Кажется, я не вижу подобных случаев в Интернете. Я был бы очень признателен, если бы вы могли указать на возможное решение или дать полезные ссылки.

+0

Отправить мне письмо на michael at neo4j.org Можете ли вы поделиться запросами, которые вы использовали? Также ваш файл messages.log магазина, ОС, тип диска, доступная память, файловая система. –

+0

Привет, Майкл! Я узнал, что у меня есть доступ только к виртуальной машине. Таким образом, это может быть источником проблемы. Я пришлю вам другую информацию, как только у меня будет доступ к ним, пока это все, что у меня есть: запуск «uname -a» - Linux ... 3.13.0-34-generiC# 60-Ubuntu SMP ... x86_64 x86_64 x86_64 GNU/Linux; query - «используя периодическую фиксацию нагрузки csv с заголовками из« file: ////path/dumps/dump.csv »в качестве строки create (n: Person {code: line.code, name: line.name, secondname: line. secondname, middlename: line.middlename, дата рождения: line.birthdate, somedate: line.somedate}) «... Спасибо! – khaidar

+0

Я также попытался воспроизвести проблему на моей другой машине linux (8Gb RAM, Ubuntu 14, те же конфиги для neo4j). Я создал файл csv с 30 000 000 записей в нем, используя скрипт python. Я не видел никаких ошибок здесь, он съел все записи без проблем ... Таким образом, существует высокая вероятность того, что проблема связана с тем, что машина является виртуальной ... – khaidar

ответ

1

      Почти забыл! Я смог решить проблему.
      Оказалось, что проблема была в некорректном входном файле, который содержал двойные кавычки («) в случайных местах. Примером может быть запись, которая выглядит так: имя, фамилия, O« что-то »,« дата ». Neo4j предполагает, что между двумя двойными кавычками подразумевается единая сущность, даже новые символы строки. Таким образом, neo4j будет потреблять миллионы строк, прежде чем он встретит второй символ. Следовательно, создавая узел, он попытался бы поместить миллионы строк в одно поле в узле. Если у него недостаточно места для кучи, чтобы вписаться во все линии между кавычками, это вызовет ошибку: «Java Heap space», «не удалось пометить транзакцию только как откаты» и т. д. Если у нее будет достаточно пустое место, это создаст огромное поле для узла.

      Если вы помещаете двойные кавычки вокруг каждого столбца в файл csv: «имя», «фамилия», «O» что-то »,« дата », вы все равно сталкиваетесь с проблемами памяти. Как вы можете видеть в предыдущем примере, запятые и новые строки не будут вступать в силу, поскольку они завернуты в кавычки.
      Я прошел через файл и заменил все двойные кавычки одиночной цитатой, используя команду sed.

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