Я хочу обработать большой CSV (миллионы строк) с помощью приложения Java на AWS и записать результаты в другой CSV.
Приложение упаковано в один jar-файл и может быть запущено с некоторымикоманда оболочки java -jar myJar.jar -option1 -option2
.
Приложение может быть вызвано в любое время, в зависимости от пользователя, загружающего CSV, запускающего приложение.
- Сначала я подумал о том, чтобы загрузить CSV в s3 и имеет лямбда-функцию , запускающуюся при каждой загрузке.Эта лямбда запускает jar (также хранится на s3), а затем записывает результаты в s3 .
Проблема: Работает для небольших файлов, ноЛямбда-функции ограничены по времени выполнения, оперативной памяти, процессору и временному хранилищу файлов.Они на самом деле созданы для коротких процессов.
- Другое решение - запустить кластер ec2 , а приложение ожидает триггер.
Проблема: Наличие кластера, даже если он простаивает, означает оплату за него.
Есть ли решение для запуска этого jar без кодирования его эквивалента в специальной технологии AWS?
РЕДАКТИРОВАТЬ: Чтобы ответить на комментарии
- Потребность в "реальном времени" заключается в том, что она должна быть запущена конечными пользователями, и они будут ждатьрезультаты для отображения.Несколько минут хорошо продумано, и я попробую решение ec2, предложенное @stdunbar, чтобы посмотреть, как оно идет.
- Я знаю, что 1M маленький, и описанное выше решение lambda / s3 хорошо работает на5M-линии CSV.Но я ищу какое-то решение, которое хорошо масштабировалось бы, и которое можно было бы использовать при локальном управлении банкой, а это несколько часов, и мы больше не могли бы позволить его запускать локально.(Я все еще на стадии эксперимента и являюсь новичком в облачных решениях)