【问题标题】:Read multiple files from s3 faster in python在 python 中更快地从 s3 读取多个文件
【发布时间】:2019-08-29 11:52:43
【问题描述】:

我在 s3 存储桶文件夹中有多个文件。在 python 中,我一一读取文件并将 concat 用于单个数据帧。但是,它很慢。如果我有一百万个文件,那么它会非常慢。是否有其他可用的方法(如 bash)可以增加读取 s3 文件的过程?

response = client.list_objects_v2(
        Bucket='bucket',
        Prefix=f'key'
        )
dflist = []

for obj in response.get('Contents', []):
    dflist.append(get_data(obj,col_name))

pd.concat(dflist)

def get_data(obj, col_name):
    data = pd.read_csv(f's3://bucket/{obj.get("Key")}', delimiter='\t', header=None, usecols=col_name.keys(),
                       names=col_name.values(), error_bad_lines=False)
    return data

【问题讨论】:

  • 使用threading可以同时读取多个文件

标签: python pandas amazon-web-services amazon-s3 aws-cli


【解决方案1】:

由于 s3 是object storage,您需要将文件带到计算机上(即读取内存中的文件)并对其进行编辑,然后再次推回(重写对象)。

所以你花了一些时间来完成你的任务。

一些辅助指针:

  1. 如果您在多个线程中处理多个文件,这将对您有所帮助。
  2. 如果您的数据非常繁重,请在您的存储桶所在区域的 aws 上启动一个实例,然后从那里处理数据并终止它。 (它将节省网络成本和跨网络拉取和推送文件的时间)

【讨论】:

    猜你喜欢
    • 2020-01-23
    • 2019-10-27
    • 2011-06-18
    • 1970-01-01
    • 2021-01-04
    • 2021-05-22
    • 2018-07-24
    • 2017-03-26
    • 2017-02-15
    相关资源
    最近更新 更多