Как читать и обрабатывать несколько файлов из s3 быстрее в Python? - PullRequest
0 голосов
/ 09 апреля 2019

У меня есть несколько файлов в определенной папке в s3.Я хочу прочитать их все.В настоящее время я зацикливаю все файлы и создаю фрейм данных, используя pandas read_csv, а затем объединяю все эти файлы.Но этот процесс занимает много времени.Я хочу что-то, что может читать файлы и обрабатывать их.

текущий код:

s3 = boto3.resource("s3")
bg = s3.Bucket("bucket")
objects = bg.objects.filter(Prefix="prefix")
file_list = []
for obj in objects:
    df = pd.read_csv(f's3://bucket/{obj.key}')
    file_list.append(df)
final_df = pd.concat(file_list)

Существует большое количество файлов, которые мне нужно обработать.

1 Ответ

0 голосов
/ 09 апреля 2019

Есть несколько способов добиться этого:

  1. Простой метод: Создайте внешнюю таблицу улья на месте s3 и выполняйте все, что вам нужно, в улье. Например: СОЗДАЙТЕ ВНЕШНЮЮ ТАБЛИЦУ, ЕСЛИ НЕ СУЩЕСТВУЕТ MovieDetails ( movieId int, строка заголовка ) ПОЛЕ ФОРМАТА СТРОКИ, ОТКЛЮЧЕННЫЕ ПОЛЯМИ, ПРЕКРАЩЕНЫ '|' Хранится в текстовом формате РАСПОЛОЖЕНИЕ 's3: //us-east-1.****.samples/sparksql/movielens/movie-details';

  2. Использование Spark: считывайте файлы с помощью spark, и вы можете создать один и тот же фрейм данных и обработать их.

  3. Если файлы поступают в потоковом режиме, вы можете использовать Nifi с интеграцией с SNS & SQS (не применимо в данном случае)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...