【问题标题】:Alpakka and S3 truncating downloaded filesAlpakka 和 S3 截断下载的文件
【发布时间】:2020-03-18 17:02:24
【问题描述】:

我有一段基于 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,它是从中间到结尾。我是否从文件中获取了块,但为什么它们似乎没有被流式传输?

无法弄清楚发生了什么以及如何解决此问题。我相信这个问题与其他question 相同,遗憾的是没有答案。

谢谢

【问题讨论】:

    标签: scala amazon-s3 akka alpakka


    【解决方案1】:

    我找到了解决办法,最后很清楚了……

    只需要更换: data.map(_.utf8String).runWith(Sink.head).map(Some.apply)

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

    从文件中累积所有块。

    谢谢

    【讨论】:

    • 你可以看看Benji S3(我是贡献者)
    猜你喜欢
    • 1970-01-01
    • 2020-05-19
    • 1970-01-01
    • 2019-02-25
    • 1970-01-01
    • 2018-02-18
    • 2020-04-03
    • 2012-12-16
    • 2020-03-16
    相关资源
    最近更新 更多