Чтение нескольких файлов из AWS S3 - PullRequest
0 голосов
/ 13 июня 2019

Мне нужна система для чтения корзины S3 для анализа.Сегмент разбит на год / месяц / день / час, где каждая папка с часами содержит множество сжатых файлов объемом более 2 ГБ.

Это что-то для сценариев в Python с boto3?Ищу любое общее направление.

1 Ответ

1 голос
/ 14 июня 2019

Amazon Athena может выполнять SQL-подобные запросы к нескольким файлам , хранящимся в Amazon S3.

Файлы могут быть сжаты с помощью gzip .На самом деле Athena будет работать быстрее и дешевле на сжатых файлах, потому что вы платите только за объем данных, отсканированных с диска.

Все файлы в данной папке (пути) в Amazon S3 должны находиться втот же формат .Например, если они представляют собой файлы CSV в формате gzip, все файлы должны иметь одинаковое количество столбцов в одинаковом порядке.

Затем можно использовать CREATE TABLE в Amazon Athena, чтоопределяет столбцы в файлах данных и расположение данных.Это самая сложная часть, потому что вы должны правильно определить формат.

Затем вы можете запустить команды SQL SELECT для запроса данных , которые будут применятьсяко всем файлам в указанной папке.

В будущем, если вы хотите добавить или удалить данные , просто обновите содержимое папки.Команда SELECT всегда просматривает файлы в папке во время ее выполнения.

Учитывая ваше требование «считать различные значения customer_id и группировать их по item_id по всем файлам», онобудет что-то вроде:

SELECT
  item_id,
  COUNT(DISTINCT customer_id)
FROM table
GROUP BY 1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...