4

Firehose-> S3 использует текущую дату в качестве префикса для создания ключей в S3. Таким образом, это разделяет данные к моменту записи записи. Мой поток firehose содержит события, которые имеют определенное время события.Разделение Kinesis firehose S3 записи по времени события

Есть ли способ создать ключи S3, содержащие это время события вместо этого? Инструменты обработки вниз по течению зависят от каждого события, находящегося в «часовом каталоге», связанного с тем, когда это действительно произошло. Или это должно быть дополнительным этапом обработки после того, как Firehose будет завершен?

Время события может быть в разделе раздела, или я мог бы использовать функцию Lambda для ее анализа из записи.

ответ

2

Kinesis Firehose пока не позволяет клиентам контролировать, как генерируется суффикс даты для конечных объектов S3.

Единственный вариант с вами - добавить слой после обработки Kinesis Firehose. Например, вы можете планировать почасовое задание EMR, используя Data Pipeline, который считывает все файлы, записанные за последний час, и публикует их для исправления адресатов S3.

0

Это не ответ на вопрос, однако я хотел бы немного пояснить идею хранения записей в соответствии с временем прибытия события.

Сначала несколько слов о потоках. Kinesis - это всего лишь поток данных. И у него есть концепция , потребляющая. Можно надежно потреблять поток только путем его считывания последовательно. И есть также идея контрольно-пропускных пунктов как механизм приостановки и возобновления процесса потребления. Контрольная точка - это просто порядковый номер, который идентифицирует позицию в потоке. Через указание этого числа можно начать чтение потока из определенного события.

И теперь вернитесь к настройке по умолчанию s3 firehose ... Поскольку емкость потока кинезитов весьма ограничена, скорее всего, нужно где-то хранить данные из кинезита, чтобы проанализировать их позже. И firehose to s3 setup делает это прямо из коробки. Он просто хранит необработанные данные из потока в ведра s3. Но логически эти данные остаются теми же потоком записей. И чтобы иметь возможность надежно потреблять (читать) этот поток, нужны эти порядковые номера для контрольных точек. И эти цифры записывает время прибытия.

Что делать, если я хочу читать записи по времени создания? Похоже, что надлежащим способом выполнить эту задачу является чтение потока s3 последовательно, сброс его в базу данных или временный ряд данных временного ряда и создание данных, основанных на создании данных, на основе этого хранилища. В противном случае всегда будет ненужный шанс пропустить несколько пучков событий при чтении s3 (поток). Поэтому я бы не предложил переупорядочить ведра s3 вообще.