python分割文件为小文件_python-将S3文件拆分为1000行的较小文件

您所做的任何事情都将需要下载文件,分割文件并重新上传.唯一的问题是在哪里以及是否涉及本地磁盘.

John Rotenstein提供了一个在EC2实例上使用本地磁盘的示例.这具有在AWS数据中心中运行的优势,因此它获得了高速连接,但有以下限制:(1)您需要磁盘空间来存储原始文件及其片段,并且(2)您需要一个EC2实例在哪里可以做到这一点.

一个小的优化是通过使用连字符作为s3 cp的目标来避免大文件的本地副本:这会将输出发送到标准输出,然后您可以将其通过管道传递给split(在这里我也在使用用来告诉split从标准输入中读取的连字符):

aws s3 cp s3://my-bucket/big-file.txt - | split -l 1000 - output.

aws s3 cp output.* s3://dest-bucket/

同样,这需要EC2实例在其上运行,并需要输出文件的存储空间.但是,有一个拆分标志,可让您为拆分中的每个文件运行一个shell命令:

aws s3 cp s3://src-bucket/src-file - | split -b 1000 --filter 'aws s3 cp - s3://dst-bucket/result.$FILE' -

因此,现在您已经消除了本地存储的问题,但是只剩下在哪里运行它的问题.我的建议是AWS Batch,它可以在执行命令所需的时间内启动一个EC2实例.

您当然可以在Lambda上编写Python脚本来执行此操作,这将具有在将源文件上传到S3后自动触发的好处.我对Python SDK(boto)不太熟悉,但是看来get_object会将原始文件的主体返回为stream of bytes,然后您可以将其迭代为行,但是要在每个输出文件中累积多少行.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值