Как я могу использовать вывод задания потоковой передачи в качестве входных данных для другого задания потоковой передачи, запущенного на двух отдельных серверах? - PullRequest
0 голосов
/ 11 декабря 2018

Мой senario выглядит следующим образом:

Kafka ----> spark stream (server1) -----> spark stream (server2)

сервер 1 - это сервер организации 1, выполняющийнекоторые преобразования в наборе данных.

сервер 2 - это сервер организации 2, выполняющий несколько другое преобразование для данных, выведенных из первого задания потоковой передачи.

Я хочу знать, возможен ли этот тип конвейера илине.Если возможно, как мы можем сделать то же самое.

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

1 Ответ

0 голосов
/ 12 декабря 2018

Вы можете открыть необработанный TCP-сокет в Spark с помощью socketTextStream для объекта StreamingContext, но проблема, с которой я столкнулся, заключается в том, что исполнители отключаются, драйверы перемещаются на новые узлы, и поэтому вам нужен какой-то тип обслуживаниясредство обнаружения / балансировки нагрузки динамически, зная, где находится сокет назначения.

Сравните это с использованием Kafka, где соединение с одним брокером Kafka может загрузить весь кластер.

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

Но, в конце концов, вы просто запрашиваете сокет TCP, а Spark или Kafka - это просто деталь реализации.

...