#amazon-web-services #aws-lambda #amazon-athena
#amazon-веб-сервисы #aws-лямбда #amazon-athena
Вопрос:
Я время от времени добавляю файлы на Amazon S3, и я использую Amazon Athena для выполнения запроса к этим данным и сохранения их в другом сегменте S3 в формате CSV (агрегированные данные), я пытаюсь найти способ для Athena выбирать только новые данные (которые ранее не запрашивались Athena), чтобы оптимизировать стоимость и избежать дублирования данных. Я пытался обновить записи после того, как они были выбраны Athena, но запрос на обновление не поддерживается в Athena. Есть ли идея решить эту проблему?
Ответ №1:
Athena не отслеживает файлы на S3, она только определяет, какие файлы читать, когда вы запускаете запрос.
При планировании запроса Athena просматривает метаданные таблицы для определения местоположения таблицы, перечисляет это местоположение и, наконец, считывает все файлы, которые находит во время выполнения запроса. Если таблица разбита на разделы, в ней будет указан список местоположений всех разделов, соответствующих запросу.
Единственный способ контролировать, какие файлы Athena будет читать во время выполнения запроса, — это разбить таблицу на разделы и убедиться, что запросы соответствуют разделам, которые вы хотите, чтобы она читала.
Один из распространенных способов чтения только новых данных — поместить данные в префиксы на S3, которые включают дату, и создать таблицы, разделенные по дате. Затем во время запроса вы можете выполнить фильтрацию по последней неделе, месяцу или другому периоду времени, чтобы ограничить объем считываемых данных.
Вы можете найти более подробную информацию о разделении в документации Athena.
Комментарии:
1. Также полезно напомнить, что вам нужно восстановить свою таблицу , чтобы добавить новые разделы к метаданным клея.