Как передавать данные из Amazon SQS в файлы в Amazon S3 - PullRequest
0 голосов
/ 04 сентября 2018

Как быстро создать механизм, который считывает данные json из Amazon SQS и сохраняет их в файлах avro (может быть другого формата) в корзине s3, разбитых по дате и значению данного поля в сообщении json?

1 Ответ

0 голосов
/ 05 сентября 2018

Вы можете написать Лямбда-функцию AWS , которая вызывается сообщением, отправляемым в очередь Amazon SQS. Вы несете ответственность за написание этого кода, поэтому ответ таков: это зависит от ваших навыков кодирования.

Однако, если каждое сообщение обрабатывается индивидуально, в результате вы получите один объект Amazon S3 на каждое сообщение SQS , которое довольно неэффективно для обработки. Тот факт, что файл находится в формате Avro, не имеет значения, потому что каждый файл будет довольно маленьким. Это добавит много накладных расходов при обработке файлов.

Альтернативой может быть отправка сообщений в поток данных Amazon Kinesis , который может объединять сообщения по размеру (например, каждые 5 МБ) или времени (например, каждые 5 минут). Это приведет к меньшему количеству более крупных объектов в S3, но они не будут разделены ни в формате Avro.

Чтобы получить максимальную производительность от столбчатого формата, такого как Avro, объединяет данные в большие файлы, которые будут более эффективными для обработки . Так, например, вы можете использовать Kinesis для сбора данных, а затем ежедневное задание Amazon EMR для объединения этих файлов в многораздельные файлы Avro.

Итак, ответ таков: «Это довольно легко, но вы, вероятно, не хотите этого делать».

Ваш вопрос не определяет, как данные попадают в SQS. Если вместо обработки сообщений сразу после их получения вы хотите, чтобы данные накапливались в SQS в течение некоторого периода времени (например, 1 час или 1 день), вы могли бы написать программу, которая читает все сообщения и выводит их в многораздельные файлы Avro. При этом SQS используется как область временного хранения, что позволяет накапливать данные перед обработкой. Однако он потерял бы любой аспект отчетности в режиме реального времени.

...