Кинезис в S3 настраиваемое разбиение - PullRequest
0 голосов
/ 05 декабря 2018

Вопрос

Я прочитал это и это и это статьи.Но они дают противоречивые ответы на вопрос: как настроить разбиение при загрузке данных в S3 из Kinesis Stream?

Подробнее

В настоящее время я использую Firehose длядоставить данные из Kinesis Streams в Афину.После этого данные будут обрабатываться с помощью EMR Spark.

Время от времени мне приходится обрабатывать исторические данные в Kinesis Streams.Проблема в том, что моя логика Spark практически не зависит от разбиения данных и порядка обработки событий.Но Firehouse поддерживает разбиение только на ingestion_time (в Kinesis Stream), а не на любое другое настраиваемое поле (мне нужно event_time).

Например, в разделе Firehouse 2018/12/05/12/some-file.gz я могу получить данные за последние несколько лет.

Временные решения

Не могли бы вы помочь мне выбрать один из следующих вариантов?

  1. Копирование / разбиение данных из Kinesis Steam с помощьюКастомная лямбда.Но это выглядит более сложным и подверженным ошибкам для меня.Возможно, потому что я не очень знаком с лямбдами AWS.Более того, я не уверен, насколько хорошо он будет работать при массовой загрузке.На этой статье было сказано, что лямбда-опцион намного дороже, чем доставка в Firehouse.
  2. Загрузите данные в Firehouse, затем запустите задание Spark EMR, чтобы скопировать данные в другой сегмент с правильным разбиением.По крайней мере, для меня это звучит проще (предвзято, я только начинаю с AWS Lambas).Но у него есть недостаток двойного копирования и дополнительного искрового задания.

За один час у меня может быть до 1M строк, которые занимают до 40 МБ памяти (в сжатом состоянии).От Использование AWS Lambda с Amazon Kinesis Я знаю, что ограничение источника событий от Kinesis до Lambda имеет ограничение в 10 000 записей на пакет.Будет ли эффективно обрабатывать такой объем данных с помощью лямбды?

1 Ответ

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

вы можете использовать поток kinesis и создавать разделы так, как вам хочется.Вы создаете производителя, а в своем потребителе создаете разделы.https://aws.amazon.com/pt/kinesis/data-streams/getting-started/

...