У меня есть поток Kinesis, в который мое приложение записывает ~ 10K сообщений в секунду в формате прото.
Я хотел бы сохранить эти сообщения на S3 в формате паркета. Для более удобного поиска мне нужно разделить мои данные по полю ID пользователя, которое является частью сообщения.
В настоящее время у меня есть лямбда-функция, которая запускается событием Kinesis. Он получает до 10 тыс. Сообщений, группирует их по идентификатору пользователя и затем записывает эти файлы в S3 в формате паркета.
Моя проблема в том, что файлы, которые генерирует эта лямбда-функция, очень малы, ~ 200 КБ, хотя я хотел бы создать ~ 200 МБ файлов для лучшей производительности запросов (я запрашиваю эти файлы с помощью AWS Athena).
Наивным подходом было бы написать еще одну лямбда-функцию, которая считывает эти файлы и объединяет их (объединяет) в большой файл, но я чувствую, что что-то упустил, и должен быть лучший способ сделать это.
Мне интересно, стоит ли мне использовать Spark, как описано в этом вопросе.