Для каждого отдельного значения в col_a выведите новую таблицу - PullRequest
0 голосов
/ 13 февраля 2020

У меня есть таблица данных Athena в S3, которая действует как исходная таблица со столбцами id, name, event. Для каждого уникального значения name в этой таблице я хотел бы вывести новую таблицу со всеми строками, соответствующими этому значению name, и сохранить ее в другой сегмент в S3. Это приведет к тому, что в S3 сохранится n новых файлов, где n - это также число уникальных name значений в исходной таблице.

Я пробовал отдельные запросы Athena в Lambda с использованием PARTITION BY и запросов CTAS, но не могу получить желаемый результат. Кажется, что AWS Клей может получить ожидаемый результат, но я читал в Интернете, что он дороже, и, возможно, я смогу получить ожидаемый результат, используя Lambda.

Как я могу сохранить новый файл (предпочтительно JSON формат), который содержит все строки, соответствующие каждому уникальному name в S3?

Желательно, чтобы я запускал его один раз в день для обновления данные хранятся в name, но основной вопрос на данный момент вызывает вопрос выше.

1 Ответ

0 голосов
/ 25 февраля 2020

Когда вы пишете свой код spark / glue, вам нужно разделить данные, используя столбец имени. Однако это приведет к тому, что путь будет иметь следующий формат

S3: //bucketname/folder/name=value/file.json

Это должно дать отдельный набор файлов для каждого имя, но если вы хотите получить к нему доступ как к отдельной таблице, вам, возможно, потребуется избавиться от знака = с ключа, прежде чем сканировать данные и сделать его доступным через Athena

Если вы используете лямбду Операция включает в себя прохождение данных, аналогично тому, что делает клей, и разбиение данных

Я думаю, все зависит от объема данных, которые необходимо обработать. Клей, если использовать искру, может иметь немного дополнительного времени запуска. Клей python оболочка имеет сравнительно лучшее время запуска

...