【发布时间】:2016-11-19 16:10:20
【问题描述】:
我使用Node.JS 从我的S3 存储桶中获取文件。
那边的文件是gzipped (gz)。
我知道每个文件的内容都是由行组成的,其中每一行是一些未能放在Kinesis上的记录的JSON。
每个文件包含约 12K 的此类记录。并且我希望能够在下载文件时处理记录。
如果文件不是 gzipped,则可以使用streams 和readline 模块轻松完成。
所以,唯一阻止我这样做的是gunzip 进程,据我所知,它需要在整个文件上执行。
有没有办法gunzipping文件的一部分?
谢谢。
编辑 1:(不好的例子)
尝试@Mark Adler 的建议:
const fileStream = s3.getObject(params).createReadStream();
const lineReader = readline.createInterface({input: fileStream});
lineReader.on('line', line => {
const gunzipped = zlib.gunzipSync(line);
console.log(gunzipped);
})
我收到以下错误:
错误:标头检查不正确 在 Zlib._handle.onerror (zlib.js:363:17)
【问题讨论】:
标签: node.js amazon-web-services amazon-s3 stream gzip