Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Java Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 Библиотека для небольшого етл  [new]
razliv
Member

Откуда:
Сообщений: 1231
Порекомендуйте библиотеку под Ява, которая может считать 2-3 хмл файла(общий размер ~ 3 гигабайта), распарсить
, сделать трансформации - sort, group by , join entities , и вывести в результирующий файл.
Ищется что-то похожеее на Питновскую pandas и dask, которые не поперхнувшись жуют гигабайтовые файлы, делают групповые трансформации и пишут на диск.
25 май 21, 11:14    [22326642]     Ответить | Цитировать Сообщить модератору
 Re: Библиотека для небольшого етл  [new]
razliv
Member

Откуда:
Сообщений: 1231
Основная проблема то - что большинство библиотек, при файлах выше гигабайта, выбивают out of memory :)
25 май 21, 11:15    [22326645]     Ответить | Цитировать Сообщить модератору
 Re: Библиотека для небольшого етл  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 8254
razliv,
Как то сумбурно. Почему сразу три в оперативку а не по частям?
25 май 21, 11:19    [22326648]     Ответить | Цитировать Сообщить модератору
 Re: Библиотека для небольшого етл  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 8254
razliv
Основная проблема то - что большинство библиотек, при файлах выше гигабайта, выбивают out of memory :)
потому что глупо считать xml как субд
25 май 21, 11:20    [22326649]     Ответить | Цитировать Сообщить модератору
 Re: Библиотека для небольшого етл  [new]
razliv
Member

Откуда:
Сообщений: 1231
Да, согласен, архитектурно - стоило встать базу данных, и делать трансформации в базе данных.
Но я пришел на проект на фазе, когда уже все написано, на малых обьемах работает, а на продакшне
вылетает. Таким образом - теперь это мой головняк.
Просто самым быстрым, мне кажется, переписать под библиотеку которая приспособлена под большие данные.
Хотя может и ошибаюсь, поэтому и обращаюсь на форум, может кто-то поделиться идеями.
25 май 21, 11:24    [22326651]     Ответить | Цитировать Сообщить модератору
 Re: Библиотека для небольшого етл  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 8254
razliv,
Замечательно что согласен.
Теперь плиз код с ошибкой для ОДНОГО ФАЙЛА а не трех
25 май 21, 11:33    [22326661]     Ответить | Цитировать Сообщить модератору
 Re: Библиотека для небольшого етл  [new]
razliv
Member

Откуда:
Сообщений: 1231
Ну я вижу, люди реализовали трансоформацию одного файла, из xml в csv с помощью XSLT движка , ну
и вполне ожидаемо - out of memory пишет движок.

То есть я хочу это дело переписать под яву, используя фрамеворк.
25 май 21, 11:40    [22326669]     Ответить | Цитировать Сообщить модератору
 Re: Библиотека для небольшого етл  [new]
razliv
Member

Откуда:
Сообщений: 1231
Подозреваю под капотом этого движка dom модель парсинга xml, что безусловно плохое решение.
Пытаюсь найти хорошее решение.
25 май 21, 11:41    [22326670]     Ответить | Цитировать Сообщить модератору
 Re: Библиотека для небольшого етл  [new]
mad_nazgul
Member

Откуда:
Сообщений: 5687
razliv
Порекомендуйте библиотеку под Ява, которая может считать 2-3 хмл файла(общий размер ~ 3 гигабайта), распарсить
, сделать трансформации - sort, group by , join entities , и вывести в результирующий файл.
Ищется что-то похожеее на Питновскую pandas и dask, которые не поперхнувшись жуют гигабайтовые файлы, делают групповые трансформации и пишут на диск.


StAX?!

<:o)
25 май 21, 12:17    [22326697]     Ответить | Цитировать Сообщить модератору
 Re: Библиотека для небольшого етл  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 8254
mad_nazgul, razliv
Чет я подумал что потоковые не умеют группировки сортировки.

Сообщение было отредактировано: 25 май 21, 12:22
25 май 21, 12:30    [22326713]     Ответить | Цитировать Сообщить модератору
 Re: Библиотека для небольшого етл  [new]
razliv
Member

Откуда:
Сообщений: 1231
PetroNotC Sharp, mad_nasgul

Абсолютно правильно - stax, был бы идеальным вариантом - но есть групповые фильтрации, сортировки, а стах в памяти держит только текущий item.
25 май 21, 13:11    [22326748]     Ответить | Цитировать Сообщить модератору
 Re: Библиотека для небольшого етл  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 8254
razliv
PetroNotC Sharp, mad_nasgul

Абсолютно правильно - stax, был бы идеальным вариантом - но есть групповые фильтрации, сортировки, а стах в памяти держит только текущий item.
возвращаемся 22326661
25 май 21, 13:33    [22326773]     Ответить | Цитировать Сообщить модератору
 Re: Библиотека для небольшого етл  [new]
fixxer
Member

Откуда:
Сообщений: 834
Чудес не бывает. Либо вы даете достаточно памяти для хранения агрегатов, либо делаете в два прохода: сортировка в промежуточный файл, потом агрегация.
25 май 21, 15:06    [22326848]     Ответить | Цитировать Сообщить модератору
 Re: Библиотека для небольшого етл  [new]
Leonid Kudryavtsev
Member

Откуда:
Сообщений: 9651
1. Добавить памяти. Сервера с объемом памяти в 256-512 Gb уже не есть что-то удивительное и хайсечное. AFAIK
2. Как другой вариант, искать DOM-парсеры с оптимизацией по памяти. Чудес не бывает, но вполне возможно, нагрузка на память может быть в несколько раз (думаю до десятка) меньше, чем у "обычных" стиральных порошков парсеров типа халан/херсер.

Сколько памяти на сервера, как много юзеров, какой GC в JVM, кто нибудь профилировал/настраивал JVM.

Сообщение было отредактировано: 25 май 21, 15:08
25 май 21, 15:15    [22326853]     Ответить | Цитировать Сообщить модератору
 Re: Библиотека для небольшого етл  [new]
fixxer
Member

Откуда:
Сообщений: 834
Leonid Kudryavtsev
1. Добавить памяти. Сервера с объемом памяти в 256-512 Gb уже не есть что-то удивительное и хайсечное. AFAIK

В облаке такие инстансы влетят в копейку, а свои такие держать еще дороже. Тогда проще выгрузить и обработать где-нибудь в облачном Spark/Hadoop (Athena/RedShift)
25 май 21, 15:20    [22326860]     Ответить | Цитировать Сообщить модератору
 Re: Библиотека для небольшого етл  [new]
Leonid Kudryavtsev
Member

Откуда:
Сообщений: 9651
fixxer

Не хочется платить за железо (в облаке, не в облаке) - пусть платят программистам за оптимизацию

AFAIK есть DOM-парсеры оптимизированные по памяти. В живую с такими не работал, но читал. Думаю до десятка раз по сравнению с классическими разница вполне может быть.

Тут зависит от исходного ТЗ (что за файлы, что нужно делать), возможного железа (в сколько памяти нужно умешаться), какая должна быть производительность, сколько запросов/юзеров нужно обработать. Сколько времени выделяется программистам/админам.

Хочется автору pandas и dask - в общем-то, думаю проблем даже их прикрутить к JVM особых нет. Но что такое pandas и dask и что у них общего с XML/XSLT лично я не знаю ))).
25 май 21, 15:39    [22326877]     Ответить | Цитировать Сообщить модератору
 Re: Библиотека для небольшого етл  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 8254
razliv,
Еще вариант. Если xml это типа субд у вас, то методы те же. Сначала процесс парсинга вынести за вечер (ночью).
Потом вынести в другой процесс. Потом на другую физческую машину.
Процесс конечно в java я загнул. Все равно вроде одна jvm.
А вот на другую физ машину возможно у вас не сложно.
25 май 21, 15:56    [22326892]     Ответить | Цитировать Сообщить модератору
 Re: Библиотека для небольшого етл  [new]
Leonid Kudryavtsev
Member

Откуда:
Сообщений: 9651
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 май 21, 15:56
25 май 21, 15:59    [22326893]     Ответить | Цитировать Сообщить модератору
 Re: Библиотека для небольшого етл  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 8254
Еще вариант. Группировать и еще много чего можно в стримах.
Тоже как в субд. Сначала всасываем xml а потом без парсера работаем.
25 май 21, 16:00    [22326894]     Ответить | Цитировать Сообщить модератору
 Re: Библиотека для небольшого етл  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 8254
razliv
Да, согласен, архитектурно - стоило встать базу данных, и делать трансформации в базе данных.
Но я пришел на проект на фазе, когда уже все написано, на малых обьемах работает, а на продакшне
вылетает. Таким образом - теперь это мой головняк.
Просто самым быстрым, мне кажется, переписать под библиотеку которая приспособлена под большие данные.
Хотя может и ошибаюсь, поэтому и обращаюсь на форум, может кто-то поделиться идеями.

Вообще идиотизм подменять субд xml'ем.
Имей мужество остановится когда надо)))
25 май 21, 16:03    [22326896]     Ответить | Цитировать Сообщить модератору
 Re: Библиотека для небольшого етл  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 8254
ТС, а где у вас вообще java?
XML - - > group by - - >XML
???)))))
25 май 21, 16:15    [22326904]     Ответить | Цитировать Сообщить модератору
 Re: Библиотека для небольшого етл  [new]
mayton
Member

Откуда: loopback
Сообщений: 51389
razliv
Порекомендуйте библиотеку под Ява, которая может считать 2-3 хмл файла(общий размер ~ 3 гигабайта), распарсить
, сделать трансформации - sort, group by , join entities , и вывести в результирующий файл.
Ищется что-то похожеее на Питновскую pandas и dask, которые не поперхнувшись жуют гигабайтовые файлы, делают групповые трансформации и пишут на диск.

Можно поднять локально Spark-shell и в нем сделать. Но возможно для некоторых действий с группировками
надо будет отдельно твикать этот шелл и указывать где и какие RDD можно класть в мемори а какие в диск.
25 май 21, 16:44    [22326926]     Ответить | Цитировать Сообщить модератору
 Re: Библиотека для небольшого етл  [new]
mad_nazgul
Member

Откуда:
Сообщений: 5687
razliv
PetroNotC Sharp, mad_nasgul

Абсолютно правильно - stax, был бы идеальным вариантом - но есть групповые фильтрации, сортировки, а стах в памяти держит только текущий item.


Stream api?!

<:o)
25 май 21, 18:11    [22326988]     Ответить | Цитировать Сообщить модератору
 Re: Библиотека для небольшого етл  [new]
mayton
Member

Откуда: loopback
Сообщений: 51389
Учитывая его 3 Гигабайта - JavaStreamApi можно попробовать. Но надо будет расширяться по -Xmx да и то не факт
что нам хватит разумных пределов.
25 май 21, 18:18    [22326993]     Ответить | Цитировать Сообщить модератору
 Re: Библиотека для небольшого етл  [new]
mad_nazgul
Member

Откуда:
Сообщений: 5687
mayton
Учитывая его 3 Гигабайта - JavaStreamApi можно попробовать. Но надо будет расширяться по -Xmx да и то не факт
что нам хватит разумных пределов.


Блин 3 гига это ни о чем, не нужно играться -Xmx.

Помню в 2014 году парсил XML-ки чуть меньше 4Гб.
Причем это делалось обычным DOM-парсером, в Spring-приложении.

ИМХО если нужно экономить память, то stax - само то.
Просто группировку делать во время распознавания данных.
25 май 21, 18:43    [22327008]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Java Ответить