У меня около 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 ... но скорость похожа на плохую.