我想使用s3 cp将文件(.csv)从s3复制到本地计算机。该文件很大,我想知道是否有办法只复制它的一部分,比如文件的前10000行或5MB。
答案 0 :(得分:3)
您可以使用远程获取:
aws s3api get-object --bucket my-bucket --key foo --range bytes=1-10 output.txt
您可以指定字节数,但不能指定行数,因为这需要解释内容。
答案 1 :(得分:0)
这可能无法回答原始问题,但可能是原始问题的潜在解决方案。
您可以使用 Amazon S3 Select 对 S3 上的 .csv 文件执行 SQL 查询。这不是完整的 SQL,但您可以执行基本操作,例如选择所需字段,并使用 LIMIT
选择前 10000 行。
在 SQL 查询之上,在 aws cli command 或 boto3 sdk 中,您还可以指定一个扫描范围,例如 0 - 5000000 字节。
更令人惊奇的是,如果您使用 sdks,您可以使用一个流对象,该对象一次只能获取几条记录。这大大减少了内存使用。
答案 2 :(得分:-1)
我一直在广泛使用AWS cli。
aws s3 cp s3://bucket/large_file.tar.gz | gunzip -cd | head -n 10000 > first_10000.csv