如何更快地从amazon s3获取对象?

2024-03-28 20:52:39 发布

您现在位置:Python中文网/ 问答频道 /正文

我有大约100000个文件(小尺寸)在S3桶。 我想读这个文件并合并成5个文件。 因为我想转换100000个文件(字节文件的csv格式)到5个文件的拼花格式。你知道吗

现在,我创建6个线程(cpu\u count=7)并使用boto3、pandas、pyarrow进行压缩。你知道吗

首先,我要获取特定文件夹中的对象键。你知道吗

  key = []
  bucket = s3_resource.Bucket(bucket_name)
  for i in bucket.objects.filter(Prefix=pre_key):
    key.append(i.key)

其次,我要获取对象数据。你知道吗

  for k in key:
    if "_SUCCESS" in k:
      continue
    obj = s3_client.get_object(Bucket=bucket_name, Key=k)
    info = obj['Body'].read()
    info = info.decode('utf-8')
    info = info.replace('\\N', '')

如您所见,每个线程都读取数据。你知道吗

运行程序和测量时间需要很多时间。 我需要快速读取数据。 如何使程序快速读取数据?你知道吗

另外,我用的是aioboto3,aiobotocore,pyspark。。但速度和坏的差不多。你知道吗


Tags: 文件对象keynamein程序infoobj