Alpakka 和 S3 截断下载的文件
Alpakka and S3 truncating downloaded files
我有一段基于 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 相同,不幸的是没有答案。
谢谢
我找到了解决方案,最后很清楚...
只需更换:
data.map(_.utf8String).runWith(Sink.head).map(Some.apply)
与:
data.map(_.utf8String).runWith(Sink.seq).map(_.mkString).map(Some.apply)
正在累积文件中的所有块。
谢谢
我有一段基于 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 相同,不幸的是没有答案。
谢谢
我找到了解决方案,最后很清楚...
只需更换:
data.map(_.utf8String).runWith(Sink.head).map(Some.apply)
与:
data.map(_.utf8String).runWith(Sink.seq).map(_.mkString).map(Some.apply)
正在累积文件中的所有块。
谢谢