Уведомления

Группа в Telegram: @pythonsu

#1 Апрель 14, 2017 18:04:15

GennadiyVL
Зарегистрирован: 2017-04-14
Сообщения: 1
Репутация: +  0  -
Профиль   Отправить e-mail  

Создание потоков при необходимости

Добрый день.

Задача:
Отправлять данные из Kafka в Hive.
Данные в Kafka могут появиться быстрее чем запишутся в Hive.

Мой вариант решения - потоки.
На каждое сообщение создаём поток, который убивает себя после отрабоки SQL запроса.
Вот тут возникла сложность, как красиво и правильно проверять что экземпляр класса-потока уже существуют и нужно создать новый экземпляр.

Собственно мой вопрос:
Как красиво и правильно проверять что экземпляр класса-потока уже существуют и нужно создать новый экземпляр класса-потока?

Спасибо!

Отредактировано GennadiyVL (Апрель 14, 2017 23:41:24)

Офлайн

#2 Апрель 14, 2017 23:35:41

PEHDOM
Зарегистрирован: 2016-11-28
Сообщения: 2196
Репутация: +  294  -
Профиль   Отправить e-mail  

Создание потоков при необходимости

может вам проще обойтись FIFO очередью?
чтонибудь типа Queue, http://john16blog.blogspot.com/2012/05/python-queue.html
ложите данные из Kafka в очередь по мере появления, а уже из очереди пишете в Hive по мере возможности.



==============================
Помещайте код в теги:
[code python][/code]
Бериегите свое и чужое время.

Офлайн

#3 Апрель 14, 2017 23:57:04

4kpt_V
От: Харьков
Зарегистрирован: 2017-02-19
Сообщения: 299
Репутация: +  12  -
Профиль   Отправить e-mail  

Создание потоков при необходимости

PEHDOM
Идея здравая. Но я бы не юзал питонячью очередь. Очень ненадежная. Есть специальные очереди.

Если это не злобный ентерпрайз, то можно глянуть в сторону beanstalkd. Штука классная, но почти не развивается. Только баги лечат и все.

Альтернативно гляньте rabbitMQ. Имеет свое хранилище и в достаточной мере персистента. Одна из самых надежный очередей. Развивается серьезно. Но для простых задач - это слегка оверхед.

Ну и что-то среднее - можно построить очередь поверх redis или заюзать готовое решение RQ

P.S. Для обоих есть python-обертки.

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version