Форум сайта python.su
Добрый день.
Задача:
Отправлять данные из Kafka в Hive.
Данные в Kafka могут появиться быстрее чем запишутся в Hive.
Мой вариант решения - потоки.
На каждое сообщение создаём поток, который убивает себя после отрабоки SQL запроса.
Вот тут возникла сложность, как красиво и правильно проверять что экземпляр класса-потока уже существуют и нужно создать новый экземпляр.
Собственно мой вопрос:
Как красиво и правильно проверять что экземпляр класса-потока уже существуют и нужно создать новый экземпляр класса-потока?
Спасибо!
Отредактировано GennadiyVL (Апрель 14, 2017 23:41:24)
Офлайн
может вам проще обойтись FIFO очередью?
чтонибудь типа Queue, http://john16blog.blogspot.com/2012/05/python-queue.html
ложите данные из Kafka в очередь по мере появления, а уже из очереди пишете в Hive по мере возможности.
[code python][/code]
Офлайн
PEHDOM
Идея здравая. Но я бы не юзал питонячью очередь. Очень ненадежная. Есть специальные очереди.
Если это не злобный ентерпрайз, то можно глянуть в сторону beanstalkd. Штука классная, но почти не развивается. Только баги лечат и все.
Альтернативно гляньте rabbitMQ. Имеет свое хранилище и в достаточной мере персистента. Одна из самых надежный очередей. Развивается серьезно. Но для простых задач - это слегка оверхед.
Ну и что-то среднее - можно построить очередь поверх redis или заюзать готовое решение RQ
P.S. Для обоих есть python-обертки.
Офлайн