Алпакка и S3 усекают скачанные файлы - PullRequest
0 голосов
/ 18 марта 2020

У меня есть простой кусок кода, основанный на примерах alpakka, который должен загрузить некоторый файл из S3 для дальнейшей обработки:

S3.download(bucket, file)
  .runWith(Sink.head)
  .flatMap {
    case Some((data, _)) =>
      data.map(_.utf8String).runWith(Sink.head).map(Some.apply)
    case None =>
      Future.successful(None)
    }

Проблема в том, что содержимое файла усекается, размер файла из ObjectMetadata правильно, он имеет ~ 2M, это не большой файл.

Что я заметил, так это то, что когда я использую Sink.head, содержимое файла находится от начала до середины, если я изменяю его на Sink.last, это от середины до конца. Получаю ли я чанки из файла, но почему они не отображаются в потоке?

Не могу понять, что происходит и как это исправить. Я считаю, что проблема такая же, как и этот вопрос , к сожалению, без ответов.

Спасибо

1 Ответ

0 голосов
/ 18 марта 2020

Я нашел решение, в конце концов, это было очень ясно ...

Просто нужно заменить: data.map(_.utf8String).runWith(Sink.head).map(Some.apply)

на: data.map(_.utf8String).runWith(Sink.seq).map(_.mkString).map(Some.apply)

накапливая все куски из файла.

Спасибо

...