Ограничения в отношении пожарных шлангов

74
6

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

Как я должен идти о строительстве моего трубопровода.

спросил(а) 2019-04-02T17:29:00+03:00 1 год, 11 месяцев назад
1
Решение
85

ИМО вы можете:

    попросите обновить ваш лимит 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 часу, начиная каждый раз, когда вы заканчивали работу в последний раз → используйте доступные приемники для преобразования данных и их записи в паркетном формате. Фреймворки используют понятие контрольной точки и сохраняют последнее обработанное смещение во внешнем хранилище. Теперь, если вы перезапускаете их каждый час, они начнут читать данные непосредственно из последней увиденной записи. - Это может быть экономически эффективным, особенно если вы планируете использовать точечные экземпляры. С другой стороны, он требует больше кодирования, чем два предыдущих решения, и, очевидно, может иметь большую задержку.

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

ответил(а) 2019-04-16T11:43:00+03:00 1 год, 10 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема