我有一个简单的代码,基于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)
累积文件中的所有块。
谢谢