Искровая и непрерывная обработка данных - PullRequest
0 голосов
/ 22 января 2020

Я новичок в Spark, но читаю столько, сколько могу. У меня есть небольшой проект, в котором несколько файлов данных (в gzip) будут непрерывно появляться в корзине S3 каждый час. Мне нужно иметь возможность открывать / читать эти файлы gzip и объединять / объединять данные между ними. Итак, мне нужно взглянуть на них в целом c. Как, какие методы и инструменты от Amazon AWS можно использовать? Создаю ли я промежуточные файлы в папке S3, или удерживаю кадры данных в памяти, или использую какую-то базу данных и удаляю данные через каждый час? Итак, я ищу идеи больше, чем кусок кода.

Пока что в AWS я написал скрипт pyspark, который читает по 1 файлу за раз и создает выходной файл обратно в выходной S3 папки. Но это оставляет меня с несколькими выходными файлами на каждый час. Было бы хорошо, если бы был 1 файл за данный час.

С технологической точки зрения я использую кластер EMR с одним главным и одним базовым узлами, Pyspark и S3. Спасибо

1 Ответ

0 голосов
/ 23 января 2020

Вы можете использовать задание AWS Glue ETL, написанное на PySpark. Работы с клеем могут выполняться по расписанию каждый час. Я предлагаю прочитать весь набор данных, выполнить ваши операции и затем переместить данные в другое место долгосрочного хранения.

Если вы работаете с несколькими ГБ данных, задание PySpark должно быть выполнено в течение нескольких минут. Нет необходимости поддерживать работу кластера EMR в течение часа, если он понадобится вам только в течение 10 минут. Попробуйте использовать недолговечные кластеры EMR или задание Glue ETL.

Athena поддерживает запросы к данным GZipped. Если вы выполняете какой-то анализ, возможно, будет работать запрос Athena с временным диапазоном?

Вы также можете использовать оператор CTAS (Create Table As Select) в Athena для копирования данных в новое местоположение. и одновременно выполняя basi c ETL на нем.

Что именно делает ваш код PySpark?

...