Ограничения в отношении пожарных шлангов - PullRequest
1 голос
/ 02 апреля 2019

Мой вариант использования следующий: У меня есть данные в формате JSON, которые нужно хранить в S3 в формате паркета. Пока все хорошо, я могу создать схему в Glue и присоединить «DataFormatConversionConfiguration» к моему потоку пожарных шлангов. НО данные поступают из разных «тем». Каждая тема имеет определенную «схему». Насколько я понимаю, мне придется создать несколько потоков пожарных шлангов, так как один поток может иметь только одну схему. Но у меня есть тысячи таких тем с очень высокой пропускной способностью входящих данных. Создание большого количества ресурсов пожарных рукавов не представляется возможным (https://docs.aws.amazon.com/firehose/latest/dev/limits.html)

Как мне построить трубопровод?

1 Ответ

2 голосов
/ 16 апреля 2019

IMO вы можете:

  • запросить обновление вашего лимита Firehose и сделать все с 1 Firehose / stream + добавить лямбда-преобразование для преобразования данных в общую схему - IMO не стоит-эффективно, но вы должны видеть с вашей нагрузкой.

  • создать лямбду для каждого потока данных Kinesis, преобразовать каждое событие в схему, управляемую одним Firehose, и в конце можете отправить событиянепосредственно к вашему потоку Firehose с помощью Firehose API https://docs.aws.amazon.com/firehose/latest/APIReference/API_PutRecord.html (см. «Вопрос: Как добавить данные в мой поток доставки Amazon Kinesis Data Firehose?» здесь https://aws.amazon.com/kinesis/data-firehose/faqs/) - но также проверьте затраты прежде, потому чтодаже если ваши Lambdas вызываются «по требованию», вы можете вызывать их много в течение длительного периода времени.

  • использовать одну из сред обработки данных (Apache Spark, Apache Flink,...) и считывайте ваши данные из Kinesis партиями по 1 часу, начиная с каждого раза, когда вы заканчивали в последний раз -> используйте доступные приемники для преобразования данных и записи их в паформат ркет.Фреймворки используют понятие контрольной точки и сохраняют последнее обработанное смещение во внешнем хранилище.Теперь, если вы перезапускаете их каждый час, они начнут читать данные непосредственно из последней увиденной записи.- Это может быть экономически эффективным, особенно если вы планируете использовать точечные экземпляры.С другой стороны, он требует больше кодирования, чем 2 предыдущих решения, и, очевидно, может иметь большую задержку.

Надеюсь, что это поможет.Вы можете оставить отзыв о выбранном решении?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...