0

Мне нужно обработать данные из набора потоков, применяя одну и ту же обработку к каждому потоку независимо от других потоков.Обработка потока для каждого пользователя

Я уже видел фреймворки, подобные шторму, но, похоже, он позволяет обрабатывать только статические потоки (т. Е. Твиты формировать твиттер), в то время как мне нужно обрабатывать данные от каждого пользователя отдельно.

Простым примером того, что я имею в виду, может быть система, в которой каждый пользователь может отслеживать местоположение своего gps и видеть статистику, как средняя скорость, ускорение, сжигаемые калории и т. Д. В реальном времени. Конечно, у каждого пользователя будет свой собственный поток (ы), и система должна обрабатывать поток каждого пользователя отдельно, как если бы у каждого пользователя была своя собственная выделенная топология, обрабатывающая его данные.

Есть ли способ достичь этого с помощью фрейма, такого как шторм, искрообразование или самза?

Было бы даже лучше, если поддерживается python, так как у меня уже есть много кода, который я бы хотел использовать повторно.

Большое спасибо за вашу помощь

ответ

0

Использование Шторма, вы можете данные группы с помощью полей группирования шаблон соединения, если у вас есть идентификатор пользователя в ваших кортежей. Это гарантирует, что данные разделяются идентификатором пользователя и, таким образом, вы получаете логические подпотоки. Ваш код должен иметь возможность обрабатывать несколько групп/подпотоков, потому что один экземпляр болта получает несколько групп для обработки. Но Storm точно поддерживает ваш прецедент. Он также может запускать код Python.

+0

Большое спасибо за ваш ответ. Можно ли сделать некоторую обработку на скользящих окнах данных пользователя? Могу ли я быть уверенным в том, что данные обрабатываются упорядоченными по timestamp (запрошенная обработка IIRC может быть гарантирована только с помощью трезубца, который, похоже, не поддерживает python)? –

+0

Я лично использую Storm только с Java. Для Java вы можете выполнять скользящую обработку окон, но вам нужно реализовать всю логику самостоятельно. Вы также можете использовать Trindent, однако, насколько я знаю, вы не можете сопоставлять кортежи из разных партий. Таким образом, это не настоящие скользящие окна. Шторм также не дает никаких заказов (вы можете вернуться к коду в моем реестре github). Я думаю, используя Python, вам нужно будет реализовать упорядочивающие и раздвижные окна в вашем собственном коде. (Spark Streaming и Flink Streaming не поддерживают заказанную обработку - я не знаю о Samza) –

0

В Samza, подобно Storm, можно было бы разбивать отдельные потоки на некоторый идентификатор пользователя. Это гарантирует, что тот же процессор увидит все события для определенного пользователя (а также другие идентификаторы пользователей, которые функция разделения [хэш, например] назначает этому процессору). Тем не менее, ваше описание звучит как нечто более вероятное для системы клиента, а не для серверной операции.

Поддержка языка JVM proposed для Samza, но еще не реализована.

+0

Благодарим вас за ответ. Мы выполняем обработку на стороне сервера по разным причинам, обработка на стороне клиента не является вариантом в нашем случае. Самза была бы великолепна, если бы только она поддерживала многоязычие ... Если поддержка многоязычия будет когда-либо приземляться в Самазе, я обязательно подумаю об использовании ее. Еще раз спасибо –

Смежные вопросы