| 
 | 
| 
 
Библиотека для небольшого етл 
 | 
|||
|---|---|---|---|
| 
 #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=40072700&tid=2120438]:  | 
    0ms | 
get settings:  | 
    11ms | 
get forum list:  | 
    12ms | 
check forum access:  | 
    3ms | 
check topic access:  | 
    3ms | 
track hit:  | 
    48ms | 
get topic data:  | 
    10ms | 
get forum data:  | 
    2ms | 
get page messages:  | 
    58ms | 
get tp. blocked users:  | 
    1ms | 
| others: | 241ms | 
| total: | 389ms | 

| 0 / 0 | 

На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даете согласие с использованием данных технологий.