Гость
Map
Форумы / Java [игнор отключен] [закрыт для гостей] / Библиотека для небольшого етл / 25 сообщений из 42, страница 1 из 2
25.05.2021, 11:14
    #40072654
razliv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Библиотека для небольшого етл
Порекомендуйте библиотеку под Ява, которая может считать 2-3 хмл файла(общий размер ~ 3 гигабайта), распарсить
, сделать трансформации - sort, group by , join entities , и вывести в результирующий файл.
Ищется что-то похожеее на Питновскую pandas и dask, которые не поперхнувшись жуют гигабайтовые файлы, делают групповые трансформации и пишут на диск.
...
Рейтинг: 0 / 0
25.05.2021, 11:15
    #40072655
razliv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Библиотека для небольшого етл
Основная проблема то - что большинство библиотек, при файлах выше гигабайта, выбивают out of memory :)
...
Рейтинг: 0 / 0
25.05.2021, 11:19
    #40072657
PetroNotC Sharp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Библиотека для небольшого етл
razliv,
Как то сумбурно. Почему сразу три в оперативку а не по частям?
...
Рейтинг: 0 / 0
25.05.2021, 11:20
    #40072658
PetroNotC Sharp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Библиотека для небольшого етл
razliv
Основная проблема то - что большинство библиотек, при файлах выше гигабайта, выбивают out of memory :)
потому что глупо считать xml как субд
...
Рейтинг: 0 / 0
25.05.2021, 11:24
    #40072659
razliv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Библиотека для небольшого етл
Да, согласен, архитектурно - стоило встать базу данных, и делать трансформации в базе данных.
Но я пришел на проект на фазе, когда уже все написано, на малых обьемах работает, а на продакшне
вылетает. Таким образом - теперь это мой головняк.
Просто самым быстрым, мне кажется, переписать под библиотеку которая приспособлена под большие данные.
Хотя может и ошибаюсь, поэтому и обращаюсь на форум, может кто-то поделиться идеями.
...
Рейтинг: 0 / 0
25.05.2021, 11:33
    #40072664
PetroNotC Sharp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Библиотека для небольшого етл
razliv,
Замечательно что согласен.
Теперь плиз код с ошибкой для ОДНОГО ФАЙЛА а не трех
...
Рейтинг: 0 / 0
25.05.2021, 11:40
    #40072667
razliv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Библиотека для небольшого етл
Ну я вижу, люди реализовали трансоформацию одного файла, из xml в csv с помощью XSLT движка , ну
и вполне ожидаемо - out of memory пишет движок.

То есть я хочу это дело переписать под яву, используя фрамеворк.
...
Рейтинг: 0 / 0
25.05.2021, 11:41
    #40072668
razliv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Библиотека для небольшого етл
Подозреваю под капотом этого движка dom модель парсинга xml, что безусловно плохое решение.
Пытаюсь найти хорошее решение.
...
Рейтинг: 0 / 0
25.05.2021, 12:17
    #40072689
mad_nazgul
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Библиотека для небольшого етл
razliv
Порекомендуйте библиотеку под Ява, которая может считать 2-3 хмл файла(общий размер ~ 3 гигабайта), распарсить
, сделать трансформации - sort, group by , join entities , и вывести в результирующий файл.
Ищется что-то похожеее на Питновскую pandas и dask, которые не поперхнувшись жуют гигабайтовые файлы, делают групповые трансформации и пишут на диск.


StAX ?!

<:o)
...
Рейтинг: 0 / 0
25.05.2021, 12:30
    #40072700
PetroNotC Sharp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Библиотека для небольшого етл
mad_nazgul, razliv
Чет я подумал что потоковые не умеют группировки сортировки.
...
Рейтинг: 0 / 0
25.05.2021, 13:11
    #40072715
razliv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Библиотека для небольшого етл
PetroNotC Sharp, mad_nasgul

Абсолютно правильно - stax, был бы идеальным вариантом - но есть групповые фильтрации, сортировки, а стах в памяти держит только текущий item.
...
Рейтинг: 0 / 0
25.05.2021, 13:33
    #40072729
PetroNotC Sharp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Библиотека для небольшого етл
razliv
PetroNotC Sharp, mad_nasgul

Абсолютно правильно - stax, был бы идеальным вариантом - но есть групповые фильтрации, сортировки, а стах в памяти держит только текущий item.
возвращаемся 22326661
...
Рейтинг: 0 / 0
25.05.2021, 15:06
    #40072751
fixxer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Библиотека для небольшого етл
Чудес не бывает. Либо вы даете достаточно памяти для хранения агрегатов, либо делаете в два прохода: сортировка в промежуточный файл, потом агрегация.
...
Рейтинг: 0 / 0
25.05.2021, 15:15
    #40072752
Leonid Kudryavtsev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Библиотека для небольшого етл
1. Добавить памяти. Сервера с объемом памяти в 256-512 Gb уже не есть что-то удивительное и хайсечное. AFAIK
2. Как другой вариант, искать DOM-парсеры с оптимизацией по памяти. Чудес не бывает, но вполне возможно, нагрузка на память может быть в несколько раз (думаю до десятка) меньше, чем у "обычных" стиральных порошков парсеров типа халан/херсер.

Сколько памяти на сервера, как много юзеров, какой GC в JVM, кто нибудь профилировал/настраивал JVM.
...
Рейтинг: 0 / 0
25.05.2021, 15:20
    #40072755
fixxer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Библиотека для небольшого етл
Leonid Kudryavtsev
1. Добавить памяти. Сервера с объемом памяти в 256-512 Gb уже не есть что-то удивительное и хайсечное. AFAIK

В облаке такие инстансы влетят в копейку, а свои такие держать еще дороже. Тогда проще выгрузить и обработать где-нибудь в облачном Spark/Hadoop (Athena/RedShift)
...
Рейтинг: 0 / 0
25.05.2021, 15:39
    #40072765
Leonid Kudryavtsev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Библиотека для небольшого етл
fixxer

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

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

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

Хочется автору pandas и dask - в общем-то, думаю проблем даже их прикрутить к JVM особых нет. Но что такое pandas и dask и что у них общего с XML/XSLT лично я не знаю ))).
...
Рейтинг: 0 / 0
25.05.2021, 15:56
    #40072774
PetroNotC Sharp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Библиотека для небольшого етл
razliv,
Еще вариант. Если xml это типа субд у вас, то методы те же. Сначала процесс парсинга вынести за вечер (ночью).
Потом вынести в другой процесс. Потом на другую физческую машину.
Процесс конечно в java я загнул. Все равно вроде одна jvm.
А вот на другую физ машину возможно у вас не сложно.
...
Рейтинг: 0 / 0
25.05.2021, 15:59
    #40072775
Leonid Kudryavtsev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Библиотека для небольшого етл
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
...
Рейтинг: 0 / 0
25.05.2021, 16:00
    #40072776
PetroNotC Sharp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Библиотека для небольшого етл
Еще вариант. Группировать и еще много чего можно в стримах.
Тоже как в субд. Сначала всасываем xml а потом без парсера работаем.
...
Рейтинг: 0 / 0
25.05.2021, 16:03
    #40072778
PetroNotC Sharp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Библиотека для небольшого етл
razliv
Да, согласен, архитектурно - стоило встать базу данных, и делать трансформации в базе данных.
Но я пришел на проект на фазе, когда уже все написано, на малых обьемах работает, а на продакшне
вылетает. Таким образом - теперь это мой головняк.
Просто самым быстрым, мне кажется, переписать под библиотеку которая приспособлена под большие данные.
Хотя может и ошибаюсь, поэтому и обращаюсь на форум, может кто-то поделиться идеями.

Вообще идиотизм подменять субд xml'ем.
Имей мужество остановится когда надо)))
...
Рейтинг: 0 / 0
25.05.2021, 16:15
    #40072783
PetroNotC Sharp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Библиотека для небольшого етл
ТС, а где у вас вообще java?
XML - - > group by - - >XML
???)))))
...
Рейтинг: 0 / 0
25.05.2021, 16:44
    #40072799
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Библиотека для небольшого етл
razliv
Порекомендуйте библиотеку под Ява, которая может считать 2-3 хмл файла(общий размер ~ 3 гигабайта), распарсить
, сделать трансформации - sort, group by , join entities , и вывести в результирующий файл.
Ищется что-то похожеее на Питновскую pandas и dask, которые не поперхнувшись жуют гигабайтовые файлы, делают групповые трансформации и пишут на диск.

Можно поднять локально Spark-shell и в нем сделать. Но возможно для некоторых действий с группировками
надо будет отдельно твикать этот шелл и указывать где и какие RDD можно класть в мемори а какие в диск.
...
Рейтинг: 0 / 0
25.05.2021, 18:11
    #40072835
mad_nazgul
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Библиотека для небольшого етл
razliv
PetroNotC Sharp, mad_nasgul

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


Stream api ?!

<:o)
...
Рейтинг: 0 / 0
25.05.2021, 18:18
    #40072837
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Библиотека для небольшого етл
Учитывая его 3 Гигабайта - JavaStreamApi можно попробовать. Но надо будет расширяться по -Xmx да и то не факт
что нам хватит разумных пределов.
...
Рейтинг: 0 / 0
25.05.2021, 18:43
    #40072849
mad_nazgul
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Библиотека для небольшого етл
mayton
Учитывая его 3 Гигабайта - JavaStreamApi можно попробовать. Но надо будет расширяться по -Xmx да и то не факт
что нам хватит разумных пределов.


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

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

ИМХО если нужно экономить память, то stax - само то.
Просто группировку делать во время распознавания данных.
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Библиотека для небольшого етл / 25 сообщений из 42, страница 1 из 2
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]