|
Многопоточная обработка большого объема данных
|
|||
---|---|---|---|
#18+
Андрей ПанфиловaeugenА java'у надо чистую или можно всякие библиотеки и фреймворки использовать??? Я бы Apache Camel вкрутил, примерно как в примерах: Apache Camel SQL Component Camel SQL component SqlConsumerMaxMessagesPerPollTest.java Из примеров: sql component сразу все записи в память затащит, а ТС вроде как этого хочет избежать Последний пример использует maxMessagesPerPoll - вроде бы, по описканию оно, более подробное описание можно посмотреть в Camel SQL component. Можно использовать camel-jdbc компонент, там есть возможность выставить fetchSize, maxRows, etc ( camel-jdbc ) ... |
|||
:
Нравится:
Не нравится:
|
|||
06.08.2018, 13:54 |
|
Многопоточная обработка большого объема данных
|
|||
---|---|---|---|
#18+
ЩичеДано: ~10млн. записей в БД, которые нужно обработать именно средствами Java. Понятно, что такой объем целиком заталкивать в память не стоит и лучше использовать многопоточность. Идея: имеем читающий поток раздающий через BlockingQueue задания. Используйте ThreadPoolExecutor и таски вкидывайте таски в него а не в очередь, тогда сможете воспользоваться методами shutdown/shutdownNow ... |
|||
:
Нравится:
Не нравится:
|
|||
06.08.2018, 16:21 |
|
Многопоточная обработка большого объема данных
|
|||
---|---|---|---|
#18+
ЩичеДано: ~10млн. записей в БД, Да это в общем-то сферический конь пока что, ну много, ну долго будет обрабатываться... Сравнительно. Но: Щичетакой объем целиком заталкивать в память не стоит Почему? Щичеи лучше использовать многопоточность. Почему? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.08.2018, 17:38 |
|
Многопоточная обработка большого объема данных
|
|||
---|---|---|---|
#18+
DogenЩичетакой объем целиком заталкивать в память не стоит Почему? Хотя бы потому что много. Это не предел. DogenЩичеи лучше использовать многопоточность. Почему? 1. Потому что это требование вышестоящих сил. Должно быть и точка. 2. В несколько нитей переварить объем быстрее нежели в одну. При отладке у меня 1 нить читает, остальные пашут. Им хватает данных для обработки, чтобы загрузить все мои ядра сразу. 3. Мне самому удобнее отлаживаться несмотря на возню с потоками. Просто я объем прогоняю быстрее в несколько раз, чем была бы единственная нить. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.08.2018, 18:53 |
|
Многопоточная обработка большого объема данных
|
|||
---|---|---|---|
#18+
vimbaИспользуйте ThreadPoolExecutor и таски вкидывайте таски в него а не в очередь, тогда сможете воспользоваться методами shutdown/shutdownNow ThreadPoolExecutor, помойка еще та. Он "из коробки" снача все таски запихнет в свой контейнер, а потом начнет медленно и печально выполнять. AFAIK ... |
|||
:
Нравится:
Не нравится:
|
|||
06.08.2018, 18:55 |
|
Многопоточная обработка большого объема данных
|
|||
---|---|---|---|
#18+
Щиче2. В несколько нитей переварить объем быстрее нежели в одну. При отладке у меня 1 нить читает, остальные пашут. Им хватает данных для обработки, чтобы загрузить все мои ядра сразу. 3. Мне самому удобнее отлаживаться несмотря на возню с потоками. Просто я объем прогоняю быстрее в несколько раз, чем была бы единственная нить.в чем проблема загрузить нить, поток, другой_комп пачкой записей, и когда она закончит, сама умрет? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.08.2018, 19:16 |
|
Многопоточная обработка большого объема данных
|
|||
---|---|---|---|
#18+
Petro123, в том что читающая нить отдает свои данные обработчикам на ходу. Когда она закончит, она сама не знает, пока не дочитает до конца. Обработчик тем более не знает, когда читающая нить закончит читать и насколько быстро обработают свои блоки соседи. Тем более, они разные по размеру. Читающая нить говорит interrupt() обработчикам, когда кончились данные. Те заканчивают текущую работу и завершаются. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.08.2018, 19:35 |
|
Многопоточная обработка большого объема данных
|
|||
---|---|---|---|
#18+
ЩичеPetro123, в том что читающая нить отдает свои данные обработчикам на ходу. Когда она закончит, она сама не знает, пока не дочитает до конца. Обработчик тем более не знает, когда читающая нить закончит читать и насколько быстро обработают свои блоки соседи. Тем более, они разные по размеру. Читающая нить говорит interrupt() обработчикам, когда кончились данные. Те заканчивают текущую работу и завершаются.ниче не понял. Есть пул потоков. Старт чтения и по мере продвижения Ставим в пул поток с заданием. Понятно, что при макс пула, задания притормозятся. Но читающий поток не должен никого беспокоить. Обычно это ГУИ с мессагой: "все задачи в очереди на выполнение!" Логично? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.08.2018, 19:43 |
|
Многопоточная обработка большого объема данных
|
|||
---|---|---|---|
#18+
ЩичеЧитающая нить говорит interrupt() обработчикам, когда кончились данные. Те заканчивают текущую работу и завершаются.ты сортировку на лимон зачем ставил? Я так понял, что как раз для пачек заданий. Цикл пока EOF )))) Если флаг пачки новый, то начало пачки. ...... Если конец пачки, то SendThreadPooling(пачка) ... |
|||
:
Нравится:
Не нравится:
|
|||
06.08.2018, 19:48 |
|
Многопоточная обработка большого объема данных
|
|||
---|---|---|---|
#18+
Leonid KudryavtsevvimbaИспользуйте ThreadPoolExecutor и таски вкидывайте таски в него а не в очередь, тогда сможете воспользоваться методами shutdown/shutdownNow ThreadPoolExecutor, помойка еще та. Он "из коробки" снача все таски запихнет в свой контейнер, а потом начнет медленно и печально выполнять. AFAIK Конструктор через который можно задать параметр corePoolSize равным maxPoolSize вполне себе публичный. Или Вы под выражением "из коробки" понимаете инициализацию экзэкьютора через статические методы? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.08.2018, 20:04 |
|
Многопоточная обработка большого объема данных
|
|||
---|---|---|---|
#18+
Давно им пользовался, меня как-то не впечатлил. Точнее анти-впечатлил, не удобный он какой-то IMHO. Или я его готовил не правильно. Но на на вкус и цвет.... ))) ... |
|||
:
Нравится:
Не нравится:
|
|||
06.08.2018, 20:39 |
|
Многопоточная обработка большого объема данных
|
|||
---|---|---|---|
#18+
Щиче, Берите Apache Beam там всё из коробки для этого ... |
|||
:
Нравится:
Не нравится:
|
|||
06.08.2018, 21:32 |
|
Многопоточная обработка большого объема данных
|
|||
---|---|---|---|
#18+
GregTkЩиче, Берите Apache Beam там всё из коробки для этогоон пока по русски на уровне школьной информатики не может ТЗ озвучить. Чтобы что то брать и выбирать. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.08.2018, 23:20 |
|
Многопоточная обработка большого объема данных
|
|||
---|---|---|---|
#18+
Герой дняНужно использовать Spring Batch с JpaPaging. Можно в несколько потоков. Spring Batch - это просто целофановая упаковка. Внутри которой будут работать обычные SQL-query. И если у вас тяжёлый запрос с 20 таблицами и группировкой и сортировкой то первый чанк вы будете получать так-же долго и нудно как и вообще безо всякого батча. А потом бегают по форумам и спрашивают почему первый чанк - такой медленный. Плавали знаем. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.08.2018, 00:02 |
|
Многопоточная обработка большого объема данных
|
|||
---|---|---|---|
#18+
GregTkЩиче, Берите Apache Beam там всё из коробки для этого Я-бы взял H-Base. Но стоит доказать что будет дешевле перелить данные из одной системы в другую просто для достижения перформанса одной конкретной query. Быстро запрягать но медленно ехать. Или очень долго запрягать зато потом как еба... ну вобщем как выполнить. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.08.2018, 00:05 |
|
Многопоточная обработка большого объема данных
|
|||
---|---|---|---|
#18+
Ребят, я пока выбрал старую добрую BlockingQueue и ThreadGroup.interrupt() для прерывания потоков. Читаю блочно, пишу одна запись на блок. У меня эта связка работает, так что менять её не буду. А за перечисление технологий спасибо. Кругозор расширять надо. Petro123, стареть надо достойно. Все, в отличие от вас, поняли меня. :) И лишь вам пришло в голову троллить. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.08.2018, 09:02 |
|
Многопоточная обработка большого объема данных
|
|||
---|---|---|---|
#18+
ЩичеPetro123, стареть надо достойно.ну наконец то ты нашел оправдание своему мычанию-молчанию две страницы. Что тебе предлагают от кастрюль до сковородок). Работай! ... |
|||
:
Нравится:
Не нравится:
|
|||
07.08.2018, 09:18 |
|
Многопоточная обработка большого объема данных
|
|||
---|---|---|---|
#18+
Petro123, веди себя прилично. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.08.2018, 09:29 |
|
Многопоточная обработка большого объема данных
|
|||
---|---|---|---|
#18+
ЩичеPetro123, веди себя прилично.какие обиды? Я словом информатика хотел тебя разбудить. Чтобы ты оценивал предложения от мемберов и отвечал на вопросительные знаки. Ты проснулся. Решил. Все при своих. Удачи! ... |
|||
:
Нравится:
Не нравится:
|
|||
07.08.2018, 09:57 |
|
|
start [/forum/topic.php?fid=59&gotonew=1&tid=2121873]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
66ms |
get topic data: |
10ms |
get first new msg: |
7ms |
get forum data: |
2ms |
get page messages: |
71ms |
get tp. blocked users: |
1ms |
others: | 12ms |
total: | 200ms |
0 / 0 |