【发布时间】:2020-02-12 11:35:05
【问题描述】:
我在 S3 文件夹中有一个 gzip 文件列表,并且必须使用 scala 读取这些文件。迭代每个文件并将文件内容存储在字符串缓冲区列表中。
这是读取一个文件并以字符串形式返回的方法。
def getDecompressedData(bucket: String, key: String) : String= {
val getObjectRequest = new GetObjectRequest(bucket, key)
val s3Object = s3Client.getObject(getObjectRequest)
val byteArray = IOUtils.toByteArray(s3Object.getObjectContent)
val inputStream = new GZIPInputStream(new ByteArrayInputStream(byteArray))
val data = scala.io.Source.fromInputStream(inputStream).mkString
inputStream.close()
data
}
我得到了错误
Exception in thread "main" java.io.EOFException: Unexpected end of ZLIB input stream
at java.util.zip.InflaterInputStream.fill(InflaterInputStream.java:240)
at java.util.zip.InflaterInputStream.read(InflaterInputStream.java:158)
at java.util.zip.GZIPInputStream.read(GZIPInputStream.java:117)
at java.io.FilterInputStream.read(FilterInputStream.java:107)
at com.amazonaws.util.IOUtils.toByteArray(IOUtils.java:44)
at com.amazonaws.util.IOUtils.toString(IOUtils.java:58)
val data = scala.io.Source.fromInputStream(inputStream).mkString
【问题讨论】:
-
你试过什么?代码?你可以使用Benji(我是贡献者)+Akka stream decompression
标签: java scala amazon-s3 gzip inputstream