powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Многопоточная обработка большого объема данных
19 сообщений из 44, страница 2 из 2
Многопоточная обработка большого объема данных
    #39683720
aeugen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Андрей Панфилов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 )
...
Рейтинг: 0 / 0
Многопоточная обработка большого объема данных
    #39683810
vimba
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЩичеДано: ~10млн. записей в БД, которые нужно обработать именно средствами Java. Понятно, что такой объем целиком заталкивать в память не стоит и лучше использовать многопоточность. Идея: имеем читающий поток раздающий через BlockingQueue задания.
Используйте ThreadPoolExecutor и таски вкидывайте таски в него а не в очередь, тогда сможете воспользоваться методами shutdown/shutdownNow
...
Рейтинг: 0 / 0
Многопоточная обработка большого объема данных
    #39683864
Фотография Dogen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЩичеДано: ~10млн. записей в БД,
Да это в общем-то сферический конь пока что, ну много, ну долго будет обрабатываться... Сравнительно. Но:

Щичетакой объем целиком заталкивать в память не стоит
Почему?

Щичеи лучше использовать многопоточность.
Почему?
...
Рейтинг: 0 / 0
Многопоточная обработка большого объема данных
    #39683915
Фотография Щиче
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DogenЩичетакой объем целиком заталкивать в память не стоит
Почему?

Хотя бы потому что много. Это не предел.
DogenЩичеи лучше использовать многопоточность.
Почему?
1. Потому что это требование вышестоящих сил. Должно быть и точка.
2. В несколько нитей переварить объем быстрее нежели в одну. При отладке у меня 1 нить читает, остальные пашут. Им хватает данных для обработки, чтобы загрузить все мои ядра сразу.
3. Мне самому удобнее отлаживаться несмотря на возню с потоками. Просто я объем прогоняю быстрее в несколько раз, чем была бы единственная нить.
...
Рейтинг: 0 / 0
Многопоточная обработка большого объема данных
    #39683917
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vimbaИспользуйте ThreadPoolExecutor и таски вкидывайте таски в него а не в очередь, тогда сможете воспользоваться методами shutdown/shutdownNow
ThreadPoolExecutor, помойка еще та.

Он "из коробки" снача все таски запихнет в свой контейнер, а потом начнет медленно и печально выполнять.

AFAIK
...
Рейтинг: 0 / 0
Многопоточная обработка большого объема данных
    #39683929
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Щиче2. В несколько нитей переварить объем быстрее нежели в одну. При отладке у меня 1 нить читает, остальные пашут. Им хватает данных для обработки, чтобы загрузить все мои ядра сразу.
3. Мне самому удобнее отлаживаться несмотря на возню с потоками. Просто я объем прогоняю быстрее в несколько раз, чем была бы единственная нить.в чем проблема загрузить нить, поток, другой_комп пачкой записей, и когда она закончит, сама умрет?
...
Рейтинг: 0 / 0
Многопоточная обработка большого объема данных
    #39683936
Фотография Щиче
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123, в том что читающая нить отдает свои данные обработчикам на ходу. Когда она закончит, она сама не знает, пока не дочитает до конца. Обработчик тем более не знает, когда читающая нить закончит читать и насколько быстро обработают свои блоки соседи. Тем более, они разные по размеру.

Читающая нить говорит interrupt() обработчикам, когда кончились данные. Те заканчивают текущую работу и завершаются.
...
Рейтинг: 0 / 0
Многопоточная обработка большого объема данных
    #39683941
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЩичеPetro123, в том что читающая нить отдает свои данные обработчикам на ходу. Когда она закончит, она сама не знает, пока не дочитает до конца. Обработчик тем более не знает, когда читающая нить закончит читать и насколько быстро обработают свои блоки соседи. Тем более, они разные по размеру.

Читающая нить говорит interrupt() обработчикам, когда кончились данные. Те заканчивают текущую работу и завершаются.ниче не понял.
Есть пул потоков.
Старт чтения и по мере продвижения Ставим в пул поток с заданием.
Понятно, что при макс пула, задания притормозятся.
Но читающий поток не должен никого беспокоить.
Обычно это ГУИ с мессагой: "все задачи в очереди на выполнение!"
Логично?
...
Рейтинг: 0 / 0
Многопоточная обработка большого объема данных
    #39683943
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЩичеЧитающая нить говорит interrupt() обработчикам, когда кончились данные. Те заканчивают текущую работу и завершаются.ты сортировку на лимон зачем ставил?
Я так понял, что как раз для пачек заданий.
Цикл пока EOF ))))
Если флаг пачки новый, то начало пачки.
......
Если конец пачки, то SendThreadPooling(пачка)
...
Рейтинг: 0 / 0
Многопоточная обработка большого объема данных
    #39683953
vimba
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leonid KudryavtsevvimbaИспользуйте ThreadPoolExecutor и таски вкидывайте таски в него а не в очередь, тогда сможете воспользоваться методами shutdown/shutdownNow
ThreadPoolExecutor, помойка еще та.

Он "из коробки" снача все таски запихнет в свой контейнер, а потом начнет медленно и печально выполнять.

AFAIK
Конструктор через который можно задать параметр corePoolSize равным maxPoolSize вполне себе публичный. Или Вы под выражением "из коробки" понимаете инициализацию экзэкьютора через статические методы?
...
Рейтинг: 0 / 0
Многопоточная обработка большого объема данных
    #39683969
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Давно им пользовался, меня как-то не впечатлил. Точнее анти-впечатлил, не удобный он какой-то IMHO. Или я его готовил не правильно.

Но на на вкус и цвет.... )))
...
Рейтинг: 0 / 0
Многопоточная обработка большого объема данных
    #39683977
GregTk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Щиче,

Берите Apache Beam там всё из коробки для этого
...
Рейтинг: 0 / 0
Многопоточная обработка большого объема данных
    #39683999
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GregTkЩиче,

Берите Apache Beam там всё из коробки для этогоон пока по русски на уровне школьной информатики не может ТЗ озвучить. Чтобы что то брать и выбирать.
...
Рейтинг: 0 / 0
Многопоточная обработка большого объема данных
    #39684003
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Герой дняНужно использовать Spring Batch с JpaPaging. Можно в несколько потоков.
Spring Batch - это просто целофановая упаковка. Внутри которой будут работать
обычные SQL-query. И если у вас тяжёлый запрос с 20 таблицами и группировкой
и сортировкой то первый чанк вы будете получать так-же долго и нудно как и вообще
безо всякого батча. А потом бегают по форумам и спрашивают почему первый чанк - такой
медленный.

Плавали знаем.
...
Рейтинг: 0 / 0
Многопоточная обработка большого объема данных
    #39684004
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GregTkЩиче,

Берите Apache Beam там всё из коробки для этого
Я-бы взял H-Base. Но стоит доказать что будет дешевле перелить
данные из одной системы в другую просто для достижения
перформанса одной конкретной query.

Быстро запрягать но медленно ехать. Или очень долго запрягать зато
потом как еба... ну вобщем как выполнить.
...
Рейтинг: 0 / 0
Многопоточная обработка большого объема данных
    #39684056
Фотография Щиче
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ребят, я пока выбрал старую добрую BlockingQueue и ThreadGroup.interrupt() для прерывания потоков. Читаю блочно, пишу одна запись на блок.

У меня эта связка работает, так что менять её не буду. А за перечисление технологий спасибо. Кругозор расширять надо. Petro123, стареть надо достойно. Все, в отличие от вас, поняли меня. :) И лишь вам пришло в голову троллить.
...
Рейтинг: 0 / 0
Многопоточная обработка большого объема данных
    #39684058
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЩичеPetro123, стареть надо достойно.ну наконец то ты нашел оправдание своему мычанию-молчанию две страницы. Что тебе предлагают от кастрюль до сковородок). Работай!
...
Рейтинг: 0 / 0
Многопоточная обработка большого объема данных
    #39684061
Фотография Щиче
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123, веди себя прилично.
...
Рейтинг: 0 / 0
Многопоточная обработка большого объема данных
    #39684069
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЩичеPetro123, веди себя прилично.какие обиды?
Я словом информатика хотел тебя разбудить. Чтобы ты оценивал предложения от мемберов и отвечал на вопросительные знаки.
Ты проснулся. Решил. Все при своих. Удачи!
...
Рейтинг: 0 / 0
19 сообщений из 44, страница 2 из 2
Форумы / Java [игнор отключен] [закрыт для гостей] / Многопоточная обработка большого объема данных
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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