Как я могу получить объект быстрее от Amazon S3? - PullRequest
0 голосов
/ 20 мая 2019

У меня около 100 000 файлов (небольшого размера) в корзине S3.Я хочу прочитать эти файлы и объединить в 5 файлов.потому что я хочу конвертировать 100 000 файлов (байтовый файл в формате CSV) в 5 файлов в формате паркет.

Теперь я создаю 6 потоков (cpu_count = 7) и использую для сжатия boto3, pandas, pyarrow.

Во-первых, я хочу получить ключ Objects в определенной папке.

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

Во-вторых, я хочу получить данные Objects.

  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', '')

Как видите, каждый потокчитает данные.

Запуск программы и измерение времени занимают много времени.Мне нужно быстро прочитать данные.Как я могу заставить программу быстро читать данные?

PS.Я использую aioboto3, aiobotocore, pyspark ... но скорость похожа на плохую.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...