|
Библиотека для небольшого етл
|
|||
---|---|---|---|
#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 |
|
|
start [/forum/topic.php?fid=59&msg=40072729&tid=2120438]: |
0ms |
get settings: |
18ms |
get forum list: |
5ms |
check forum access: |
1ms |
check topic access: |
1ms |
track hit: |
39ms |
get topic data: |
3ms |
get forum data: |
1ms |
get page messages: |
417ms |
get tp. blocked users: |
0ms |
others: | 364ms |
total: | 849ms |
0 / 0 |