【发布时间】:2020-05-28 11:49:36
【问题描述】:
我正在尝试读取一个大的 AWS S3 Compressed Object(gz)。我不想读取整个对象,想要部分读取它,以便我可以并行处理未压缩的数据 我正在使用带有“Range”标头的 GetObjectRequest 阅读它,我在其中设置字节范围。 但是,当我给出介于 (100,200) 之间的字节范围时,它会失败并显示“不是 GZIP 格式” 失败的原因是,AWS 请求返回一个流,但是当我将它解析为 GZIPInputStream 时它失败,因为“GZIPInputStream”需要第一个字节(GZIP_MAGIC = 0x8b1f)来确认它是 gzip,它不存在于流中。
GetObjectRequest rangeObjectRequest = new GetObjectRequest(<<Bucket>>, <<Key>>).withRange(100, 200);
S3Object object = s3Client.getObject(rangeObjectRequest);
S3ObjectInputStream rawData = object.getObjectContent();
InputStream data = new GZIPInputStream(rawData);
谁能指导正确的方法?
【问题讨论】:
标签: java amazon-web-services amazon-s3 gzip gzipstream