Как воспроизвести в потоке данные, передаваемые на S3 из AWS Firehose? - PullRequest
0 голосов
/ 12 декабря 2018

pipeline Существует множество примеров того, как данные сохраняются AWS Firehose в корзину S3 и параллельно передаются в какое-то приложение обработки (как на картинке выше).

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

Я могу подумать о воспроизведении его с помощью Firehose или Lambda, но:

  1. Kinesis Firehose не может использовать из корзины.
  2. Lambda потребуется десериализовать файл .parquet для отправки его в Firehose или поток данных Kinesis.И меня смущает эта неявная десериализация, потому что Firehose явно ее сериализует.

Или, может быть, есть какой-то другой способ вернуть данные из s3 в поток, который я полностью пропускаю?

РЕДАКТИРОВАТЬ: Более того, если мы будем запускать лямбду для передачи записей в поток, вероятно, потребуется более 15 минут.Таким образом, другой вариант - запустить скрипт, который работает на отдельном экземпляре EC2.Но этот метод извлечения данных из s3 выглядит намного сложнее, чем хранить его там с помощью Firehose, что заставляет меня думать, что должен быть какой-то более простой подход

1 Ответ

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

Проблема, которая меня поразила, заключалась в том, что я ожидал более продвинутую сериализацию, чем просто преобразование в JSON (как, например, Kafka с поддержкой AVRO).

Что касается воспроизведения записей из корзины s3: эта часть решения кажетсябыть действительно значительно более сложным, чем тот, который нужен для архивирования записей.Поэтому, если мы можем заархивировать поток с помощью стандартных функций Firehose, для его воспроизведения нам понадобятся две лямбда-функции и два потока.

  1. Lambda 1 (переводит имена файлов в поток)
  2. Лямбда 2 (активируется для каждого имени файла в первом потоке, передает записи из файлов во второй поток)

Первая лямбда запускается вручную, просматривает все файлы корзины s3 и записывает их имена в первый поток.Вторая лямбда-функция запускается при каждом событии потока с именами файлов, считывает все записи в файле и отправляет их в конечный поток.Из которого могут быть использованы данные, кроме Kinesis Data Analytics или другой лямбды.

В этом решении предполагается, что в день создается несколько файлов и в каждом файле несколько записей.

Похоже на это решение, но в статье я выбрал Kinesis вместо динамо в статье.

...