Как скачать и обработать большой файл S3? - PullRequest
0 голосов
/ 23 марта 2019

У меня большой файл JSON (т.е. от 100 МБ до 3 ГБ) в S3. Как это обработать? Сегодня я использую s3client.getObjectContent() для получения входного потока и пытаюсь его обработать.

Во время потоковой передачи я передаю inputstream Джексону jsonparser и извлекаю каждый объект JSON и вызываю другой микросервис для обработки объекта JSON, полученного из входного потока s3.

Проблема:

Поскольку я обрабатываю объект JSON, поток S3 закрывается без обработки всей полезной нагрузки от S3.

Я получаю предупреждение:

S3AbortableInputStream: не все байты были прочитаны из S3ObjectInputStream, прерывая HTTP-соединение

Я ищу способ обработки большой полезной нагрузки S3 без закрытия клиентом S3 потока перед обработкой всей полезной нагрузки. Любые лучшие практики или идеи приветствуются.

Ограничения: Мне нужно обработать это как поток или с минимальным объемом памяти.

1 Ответ

0 голосов
/ 25 марта 2019

Не могли бы вы внести следующие изменения в свой код и проверить?

FROM:

if (s3ObjectInputStream != null) {
                s3ObjectInputStream.abort();
            }

TO:

if (s3ObjectInputStream == null) {
                s3ObjectInputStream.abort();
            }
...