Запуск нескольких заданий потоковой передачи Apache spark

#amazon-web-services #apache-spark #streaming #amazon-emr

#amazon-веб-службы #apache-spark #потоковая передача #amazon-emr

Вопрос:

Я новичок в потоковой передаче Spark, и, как я вижу, есть разные способы сделать одно и то же, что меня немного смущает.

Это сценарий: у нас каждую минуту происходит несколько событий (более 50 различных событий), и я хочу выполнить некоторое преобразование данных, а затем изменить формат с json на parquet и сохранить данные в корзине s3. Я создаю конвейер, в котором мы получаем данные и сохраняем их в корзине s3, а затем происходит преобразование (задания Spark). Мои вопросы:

1 — Хорошо ли, если я запускаю функцию lambda, которая сортирует каждый тип события в отдельных подкаталогах, а затем считывает папку в SparkStreaming? или лучше сохранить все события в одном каталоге, а затем прочитать их в моей потоковой передаче spark?

2- Как я могу запускать несколько потоков SPARK одновременно? (Я попытался просмотреть список схем и папок, но, по-видимому, это не работает)

3. Нужен ли мне инструмент оркестровки (airflow) для моей цели? Мне нужно постоянно искать новые события без паузы между ними.

Я собираюсь использовать, KinesisFirehose -> s3 (data lake) -> EMR (Spark) -> s3 (хранилище данных)

Заранее большое вам спасибо!

Комментарии:

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

2. Как я могу запускать несколько потоков SPARK одновременно? создайте и запустите threadpool и iterator для типов файлов и создайте отдельный StreamingContext внутри каждого потока, который обрабатывает определенный тип данных о событиях.