fow*_*tom 7 python amazon-s3 elasticsearch boto3 line-profiler
TL;DR:尝试使用 Boto3 将 .json 文件放入 S3 存储桶,过程非常慢。寻找加快速度的方法。
这是我关于SO的第一个问题,所以如果我遗漏了任何重要的细节,我深表歉意。本质上,我试图从 Elasticsearch 中提取数据并使用 Boto3 将其存储在 S3 存储桶中。我参考这篇文章使用ES Python客户端的滚动功能拉取多页ES数据。当我滚动时,我正在处理数据并将其以 [timestamp].json 格式放入存储桶中,使用以下命令:
s3 = boto3.resource('s3')
data = '{"some":"json","test":"data"}'
key = "path/to/my/file/[timestamp].json"
s3.Bucket('my_bucket').put_object(Key=key, Body=data)
Run Code Online (Sandbox Code Playgroud)
在我的机器上运行这个程序时,我注意到这个过程非常慢。使用line profiler,我发现这一行消耗了整个程序 96% 以上的时间:
s3.Bucket('my_bucket').put_object(Key=key, Body=data)
Run Code Online (Sandbox Code Playgroud)
我可以进行哪些修改来加快此过程?请记住,我在程序中创建 .json 文件(每个文件约为 240 字节)并将它们直接流式传输到 S3,而不是在本地保存并上传文件。提前致谢。
由于您可能会上传许多小文件,因此您应该考虑以下几点:
upload_file或upload_fileobj方法,因为它们将处理多部分上传和线程。| 归档时间: |
|
| 查看次数: |
9059 次 |
| 最近记录: |