我有一个在亚马逊S3上的巨大文件(约6GB),想要获取前100行内容,而不必下载整个文件。这可行吗?
以下是我目前正在进行的操作:
aws cp s3://foo/bar - | head -n 100
但这需要一些时间来执行。我有点困惑,head
不应该在读取足够多的行后关闭管道吗?这样做会导致 aws cp
在下载整个文件之前崩溃,出现 BrokenPipeError 错误,是吗?
我有一个在亚马逊S3上的巨大文件(约6GB),想要获取前100行内容,而不必下载整个文件。这可行吗?
以下是我目前正在进行的操作:
aws cp s3://foo/bar - | head -n 100
但这需要一些时间来执行。我有点困惑,head
不应该在读取足够多的行后关闭管道吗?这样做会导致 aws cp
在下载整个文件之前崩溃,出现 BrokenPipeError 错误,是吗?
使用GET请求中的Range HTTP标头,您可以检索Amazon S3存储的对象中的特定字节范围。 (见http://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectGET.html)
如果您使用aws cli,则可以使用aws s3api get-object --range bytes=0-xxx
,请参见http://docs.aws.amazon.com/cli/latest/reference/s3api/get-object.html
它不完全是行数,但应允许您部分检索文件,避免下载完整对象。