|
Библиотека для небольшого етл
|
|||
---|---|---|---|
#18+
Порекомендуйте библиотеку под Ява, которая может считать 2-3 хмл файла(общий размер ~ 3 гигабайта), распарсить , сделать трансформации - sort, group by , join entities , и вывести в результирующий файл. Ищется что-то похожеее на Питновскую pandas и dask, которые не поперхнувшись жуют гигабайтовые файлы, делают групповые трансформации и пишут на диск. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.05.2021, 11:14 |
|
Библиотека для небольшого етл
|
|||
---|---|---|---|
#18+
Основная проблема то - что большинство библиотек, при файлах выше гигабайта, выбивают out of memory :) ... |
|||
:
Нравится:
Не нравится:
|
|||
25.05.2021, 11:15 |
|
Библиотека для небольшого етл
|
|||
---|---|---|---|
#18+
razliv, Как то сумбурно. Почему сразу три в оперативку а не по частям? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.05.2021, 11:19 |
|
Библиотека для небольшого етл
|
|||
---|---|---|---|
#18+
razliv Основная проблема то - что большинство библиотек, при файлах выше гигабайта, выбивают out of memory :) ... |
|||
:
Нравится:
Не нравится:
|
|||
25.05.2021, 11:20 |
|
Библиотека для небольшого етл
|
|||
---|---|---|---|
#18+
Да, согласен, архитектурно - стоило встать базу данных, и делать трансформации в базе данных. Но я пришел на проект на фазе, когда уже все написано, на малых обьемах работает, а на продакшне вылетает. Таким образом - теперь это мой головняк. Просто самым быстрым, мне кажется, переписать под библиотеку которая приспособлена под большие данные. Хотя может и ошибаюсь, поэтому и обращаюсь на форум, может кто-то поделиться идеями. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.05.2021, 11:24 |
|
Библиотека для небольшого етл
|
|||
---|---|---|---|
#18+
razliv, Замечательно что согласен. Теперь плиз код с ошибкой для ОДНОГО ФАЙЛА а не трех ... |
|||
:
Нравится:
Не нравится:
|
|||
25.05.2021, 11:33 |
|
Библиотека для небольшого етл
|
|||
---|---|---|---|
#18+
Ну я вижу, люди реализовали трансоформацию одного файла, из xml в csv с помощью XSLT движка , ну и вполне ожидаемо - out of memory пишет движок. То есть я хочу это дело переписать под яву, используя фрамеворк. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.05.2021, 11:40 |
|
Библиотека для небольшого етл
|
|||
---|---|---|---|
#18+
Подозреваю под капотом этого движка dom модель парсинга xml, что безусловно плохое решение. Пытаюсь найти хорошее решение. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.05.2021, 11:41 |
|
Библиотека для небольшого етл
|
|||
---|---|---|---|
#18+
razliv Порекомендуйте библиотеку под Ява, которая может считать 2-3 хмл файла(общий размер ~ 3 гигабайта), распарсить , сделать трансформации - sort, group by , join entities , и вывести в результирующий файл. Ищется что-то похожеее на Питновскую pandas и dask, которые не поперхнувшись жуют гигабайтовые файлы, делают групповые трансформации и пишут на диск. StAX ?! <:o) ... |
|||
:
Нравится:
Не нравится:
|
|||
25.05.2021, 12:17 |
|
Библиотека для небольшого етл
|
|||
---|---|---|---|
#18+
mad_nazgul, razliv Чет я подумал что потоковые не умеют группировки сортировки. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.05.2021, 12:30 |
|
Библиотека для небольшого етл
|
|||
---|---|---|---|
#18+
PetroNotC Sharp, mad_nasgul Абсолютно правильно - stax, был бы идеальным вариантом - но есть групповые фильтрации, сортировки, а стах в памяти держит только текущий item. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.05.2021, 13:11 |
|
Библиотека для небольшого етл
|
|||
---|---|---|---|
#18+
razliv PetroNotC Sharp, mad_nasgul Абсолютно правильно - stax, был бы идеальным вариантом - но есть групповые фильтрации, сортировки, а стах в памяти держит только текущий item. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.05.2021, 13:33 |
|
Библиотека для небольшого етл
|
|||
---|---|---|---|
#18+
Чудес не бывает. Либо вы даете достаточно памяти для хранения агрегатов, либо делаете в два прохода: сортировка в промежуточный файл, потом агрегация. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.05.2021, 15:06 |
|
Библиотека для небольшого етл
|
|||
---|---|---|---|
#18+
1. Добавить памяти. Сервера с объемом памяти в 256-512 Gb уже не есть что-то удивительное и хайсечное. AFAIK 2. Как другой вариант, искать DOM-парсеры с оптимизацией по памяти. Чудес не бывает, но вполне возможно, нагрузка на память может быть в несколько раз (думаю до десятка) меньше, чем у "обычных" стиральных порошков парсеров типа халан/херсер. Сколько памяти на сервера, как много юзеров, какой GC в JVM, кто нибудь профилировал/настраивал JVM. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.05.2021, 15:15 |
|
Библиотека для небольшого етл
|
|||
---|---|---|---|
#18+
Leonid Kudryavtsev 1. Добавить памяти. Сервера с объемом памяти в 256-512 Gb уже не есть что-то удивительное и хайсечное. AFAIK В облаке такие инстансы влетят в копейку, а свои такие держать еще дороже. Тогда проще выгрузить и обработать где-нибудь в облачном Spark/Hadoop (Athena/RedShift) ... |
|||
:
Нравится:
Не нравится:
|
|||
25.05.2021, 15:20 |
|
Библиотека для небольшого етл
|
|||
---|---|---|---|
#18+
fixxer Не хочется платить за железо (в облаке, не в облаке) - пусть платят программистам за оптимизацию AFAIK есть DOM-парсеры оптимизированные по памяти. В живую с такими не работал, но читал. Думаю до десятка раз по сравнению с классическими разница вполне может быть. Тут зависит от исходного ТЗ (что за файлы, что нужно делать), возможного железа (в сколько памяти нужно умешаться), какая должна быть производительность, сколько запросов/юзеров нужно обработать. Сколько времени выделяется программистам/админам. Хочется автору pandas и dask - в общем-то, думаю проблем даже их прикрутить к JVM особых нет. Но что такое pandas и dask и что у них общего с XML/XSLT лично я не знаю ))). ... |
|||
:
Нравится:
Не нравится:
|
|||
25.05.2021, 15:39 |
|
Библиотека для небольшого етл
|
|||
---|---|---|---|
#18+
razliv, Еще вариант. Если xml это типа субд у вас, то методы те же. Сначала процесс парсинга вынести за вечер (ночью). Потом вынести в другой процесс. Потом на другую физческую машину. Процесс конечно в java я загнул. Все равно вроде одна jvm. А вот на другую физ машину возможно у вас не сложно. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.05.2021, 15:56 |
|
Библиотека для небольшого етл
|
|||
---|---|---|---|
#18+
1. Есть еще VTD-XML Parsing (Virtual Token Descriptor for XML). 2. Одна из первых же попавшихся статей в I-net'е от 2010 года. Представление DOM в виде xDB на диске. Как я понимаю, програмное API для таких реализаций то-же самое. Т.е. DOM, но хранение оптимизировано с точки зрения потребления памяти. Что то более новое с ходу не нашлось, но в свое время попадалось. Т.ч. такая реализация не одна, нужно искать, смотреть. https://www.balisage.net/Proceedings/vol5/html/Probst01/BalisageVol5-Probst01.html ... |
|||
:
Нравится:
Не нравится:
|
|||
25.05.2021, 15:59 |
|
Библиотека для небольшого етл
|
|||
---|---|---|---|
#18+
Еще вариант. Группировать и еще много чего можно в стримах. Тоже как в субд. Сначала всасываем xml а потом без парсера работаем. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.05.2021, 16:00 |
|
Библиотека для небольшого етл
|
|||
---|---|---|---|
#18+
razliv Да, согласен, архитектурно - стоило встать базу данных, и делать трансформации в базе данных. Но я пришел на проект на фазе, когда уже все написано, на малых обьемах работает, а на продакшне вылетает. Таким образом - теперь это мой головняк. Просто самым быстрым, мне кажется, переписать под библиотеку которая приспособлена под большие данные. Хотя может и ошибаюсь, поэтому и обращаюсь на форум, может кто-то поделиться идеями. Вообще идиотизм подменять субд xml'ем. Имей мужество остановится когда надо))) ... |
|||
:
Нравится:
Не нравится:
|
|||
25.05.2021, 16:03 |
|
Библиотека для небольшого етл
|
|||
---|---|---|---|
#18+
ТС, а где у вас вообще java? XML - - > group by - - >XML ???))))) ... |
|||
:
Нравится:
Не нравится:
|
|||
25.05.2021, 16:15 |
|
Библиотека для небольшого етл
|
|||
---|---|---|---|
#18+
razliv Порекомендуйте библиотеку под Ява, которая может считать 2-3 хмл файла(общий размер ~ 3 гигабайта), распарсить , сделать трансформации - sort, group by , join entities , и вывести в результирующий файл. Ищется что-то похожеее на Питновскую pandas и dask, которые не поперхнувшись жуют гигабайтовые файлы, делают групповые трансформации и пишут на диск. Можно поднять локально Spark-shell и в нем сделать. Но возможно для некоторых действий с группировками надо будет отдельно твикать этот шелл и указывать где и какие RDD можно класть в мемори а какие в диск. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.05.2021, 16:44 |
|
Библиотека для небольшого етл
|
|||
---|---|---|---|
#18+
razliv PetroNotC Sharp, mad_nasgul Абсолютно правильно - stax, был бы идеальным вариантом - но есть групповые фильтрации, сортировки, а стах в памяти держит только текущий item. Stream api ?! <:o) ... |
|||
:
Нравится:
Не нравится:
|
|||
25.05.2021, 18:11 |
|
Библиотека для небольшого етл
|
|||
---|---|---|---|
#18+
Учитывая его 3 Гигабайта - JavaStreamApi можно попробовать. Но надо будет расширяться по -Xmx да и то не факт что нам хватит разумных пределов. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.05.2021, 18:18 |
|
Библиотека для небольшого етл
|
|||
---|---|---|---|
#18+
mayton Учитывая его 3 Гигабайта - JavaStreamApi можно попробовать. Но надо будет расширяться по -Xmx да и то не факт что нам хватит разумных пределов. Блин 3 гига это ни о чем, не нужно играться -Xmx. Помню в 2014 году парсил XML-ки чуть меньше 4Гб. Причем это делалось обычным DOM-парсером, в Spring-приложении. ИМХО если нужно экономить память, то stax - само то. Просто группировку делать во время распознавания данных. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.05.2021, 18:43 |
|
Библиотека для небольшого етл
|
|||
---|---|---|---|
#18+
Я не против Stax. Я просто к тому что память у него может жрать не только исходный документ но и агрегации и сортировки. Здесь уже что Стакс что SAX. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.05.2021, 18:49 |
|
Библиотека для небольшого етл
|
|||
---|---|---|---|
#18+
razliv Основная проблема то - что большинство библиотек, при файлах выше гигабайта, выбивают out of memory :) очень интересное заявление,Библиотека тут не причем попробуйте увеличить xms xmx до 10 г ... |
|||
:
Нравится:
Не нравится:
|
|||
25.05.2021, 19:13 |
|
Библиотека для небольшого етл
|
|||
---|---|---|---|
#18+
mayton Учитывая его 3 Гигабайта - JavaStreamApi можно попробовать. Но надо будет расширяться по -Xmx да и то не факт что нам хватит разумных пределов. если он упал по оом без стримов - со стримами он упадет на 1.5 гига ему нужно просто увеличить хип,если нет денег на хип ,тогда пусть создает отдельную тему где мы будем решать нерешаемое) ... |
|||
:
Нравится:
Не нравится:
|
|||
25.05.2021, 19:21 |
|
Библиотека для небольшого етл
|
|||
---|---|---|---|
#18+
Вот тут пишут что spark-узлам рекомендовано 8Г https://spark.apache.org/docs/latest/hardware-provisioning.html и из них три четверти под нужды собственно spark-машины и хвостик для нужд ОС. При правильном тюнинге объем обрабатываемых данных может быть бесконечным. Надо только тюнить. Поглядывать в мониторинг и разбрасывать датасеты по специальным персистентным структурам (их там 4 типа бывает... кажется memory, disk+memory, ...e.t.c.) ... |
|||
:
Нравится:
Не нравится:
|
|||
25.05.2021, 19:28 |
|
Библиотека для небольшого етл
|
|||
---|---|---|---|
#18+
razliv Основная проблема то - что большинство библиотек, при файлах выше гигабайта, выбивают out of memory :) бери spark. во первых не только для этой задачи пригодиться, во вторых 100% гарантия, что прожует. плюс это думю самое близкое к pandas, может и sparkPy можно зпустить. я для халтурки парсил 1с xml файлики - отлично работает и в локальном режиме. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.05.2021, 21:07 |
|
Библиотека для небольшого етл
|
|||
---|---|---|---|
#18+
Простое растягивание -Xmx кстати не решает вообще всех проблем скейлинга памяти. Шутки ради... где-то был топик где мы растили толстую строку StringBuilder-ом. Не могу найти где... может и не здесь а в rsdn или habr. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.05.2021, 21:16 |
|
Библиотека для небольшого етл
|
|||
---|---|---|---|
#18+
mayton Простое растягивание -Xmx кстати не решает вообще всех проблем скейлинга памяти. Шутки ради... где-то был топик где мы растили толстую строку StringBuilder-ом. Не могу найти где... может и не здесь а в rsdn или habr. как так не решает? тс упал по ООМ - дай больше хипа не упадет другое дело,где програмные просчеты и жор памяти напоминает снежный ком- но тогда причем тут вообще наше обсуждение - мы же обсуждаем готовые фреймворки и либы и их падение по оом- где такие проблемы уже были исключены - иначе бы был вселенский вой и мы бы об этом услышали первыми по факту есть ситуация - чел взял файл 1 гиг и попытался его обработать посредством своего аппа ,который был запущен скорей всео с парой гиг хипа,а может и меньше- справедливо получил ООМ и пришел зачем то сюда. 1.непонятно причем тут джава 2.решения на джаве быть не может ,это девопсятина ... |
|||
:
Нравится:
Не нравится:
|
|||
25.05.2021, 21:24 |
|
Библиотека для небольшого етл
|
|||
---|---|---|---|
#18+
asv79 mayton Простое растягивание -Xmx кстати не решает вообще всех проблем скейлинга памяти. Шутки ради... где-то был топик где мы растили толстую строку StringBuilder-ом. Не могу найти где... может и не здесь а в rsdn или habr. как так не решает? тс упал по ООМ - дай больше хипа не упадет другое дело,где програмные просчеты и жор памяти напоминает снежный ком- но тогда причем тут вообще наше обсуждение - мы же обсуждаем готовые фреймворки и либы и их падение по оом- где такие проблемы уже были исключены - иначе бы был вселенский вой и мы бы об этом услышали первыми по факту есть ситуация - чел взял файл 1 гиг и попытался его обработать посредством своего аппа ,который был запущен скорей всео с парой гиг хипа,а может и меньше- справедливо получил ООМ и пришел зачем то сюда. 1.непонятно причем тут джава 2.решения на джаве быть не может ,это девопсятина А ты пробовал 3х гигбайтный файл прогрузить в java String? Это не в тему этого топика. Просто так. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.05.2021, 21:27 |
|
Библиотека для небольшого етл
|
|||
---|---|---|---|
#18+
asv79 как так не решает? тс упал по ООМ - дай больше хипа не упадет ваша наивность умиляет в java прочесть 2-3 гб и сделать трансформации - sort, group by , join entities - на типичной машине шансы почти нулевые. никакого смысла городить из этого олимпиадную задачу нет, в спарке почти наверняка вся задачу уместиться в 10 строк кода и будет работать и с 3 гб и с 300 гб файлами на ноутбуке. 99.9% без всякого тюнинга. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.05.2021, 22:13 |
|
Библиотека для небольшого етл
|
|||
---|---|---|---|
#18+
mayton А ты пробовал 3х гигбайтный файл прогрузить в java String? Это не в тему этого топика. Просто так. почему именно в стринг? ты намекаешь на кеширование и пул? по теме скажу что грузил и большие объекты - например емайл рассылки и файлы там были далеко выше 3 г ... |
|||
:
Нравится:
Не нравится:
|
|||
25.05.2021, 22:20 |
|
Библиотека для небольшого етл
|
|||
---|---|---|---|
#18+
H5N1 asv79 как так не решает? тс упал по ООМ - дай больше хипа не упадет ваша наивность умиляет в java прочесть 2-3 гб и сделать трансформации - sort, group by , join entities - на типичной машине шансы почти нулевые. никакого смысла городить из этого олимпиадную задачу нет, в спарке почти наверняка вся задачу уместиться в 10 строк кода и будет работать и с 3 гб и с 300 гб файлами на ноутбуке. 99.9% без всякого тюнинга. Я-бы предложил заслушать постановку реальной задачи. Тут ... бабка надвое сказала. Или помру или нет. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.05.2021, 22:48 |
|
Библиотека для небольшого етл
|
|||
---|---|---|---|
#18+
mayton Я-бы предложил заслушать постановку реальной задачи. Тут ... бабка надвое сказала. Или помру или нет. зачем? "прочесть 2-3 гб и сделать трансформации - sort, group by , join entities" достаточно что бы отмести самопальные велосипеды. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.05.2021, 23:03 |
|
Библиотека для небольшого етл
|
|||
---|---|---|---|
#18+
H5N1 razliv Основная проблема то - что большинство библиотек, при файлах выше гигабайта, выбивают out of memory :) бери spark. во первых не только для этой задачи пригодиться, во вторых 100% гарантия, что прожует. плюс это думю самое близкое к pandas, может и sparkPy можно зпустить. я для халтурки парсил 1с xml файлики - отлично работает и в локальном режиме. +1 спарк все сделает за милую душу и кода там будет минимум. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2021, 03:39 |
|
Библиотека для небольшого етл
|
|||
---|---|---|---|
#18+
H5N1 mayton Я-бы предложил заслушать постановку реальной задачи. Тут ... бабка надвое сказала. Или помру или нет. зачем? "прочесть 2-3 гб и сделать трансформации - sort, group by , join entities" достаточно что бы отмести самопальные велосипеды. spark - это тяжелая артиллерия. Хотя я тоже голосую за изучение ново-теха. У нас даже шутка такая ходит - "resume driven development". Это когда ты выбираешь не те технологии которых "необходимо и достаточно", а те, который позволят прокачать твоё CV. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2021, 09:36 |
|
Библиотека для небольшого етл
|
|||
---|---|---|---|
#18+
Вроде получилось договорится посылать данные меньшими порциями, слегка оптимизировать действующий код - надеюсь пролетим :) ... |
|||
:
Нравится:
Не нравится:
|
|||
27.05.2021, 08:17 |
|
Библиотека для небольшого етл
|
|||
---|---|---|---|
#18+
razliv Вроде получилось договорится посылать данные меньшими порциями, слегка оптимизировать действующий код - надеюсь пролетим :) А могли бы спарк замутить)))) ... |
|||
:
Нравится:
Не нравится:
|
|||
27.05.2021, 08:30 |
|
|
start [/forum/topic.php?all=1&fid=59&tid=2120438]: |
0ms |
get settings: |
18ms |
get forum list: |
6ms |
check forum access: |
1ms |
check topic access: |
1ms |
track hit: |
54ms |
get topic data: |
3ms |
get forum data: |
1ms |
get page messages: |
690ms |
get tp. blocked users: |
0ms |
others: | 6ms |
total: | 780ms |
0 / 0 |