Стол-перегородка для amazon athena

Я пытаюсь разделить данные, запрошенные amazon athena, по годам, месяцам и дням. Однако, когда я пытаюсь выполнить запрос из секционированных данных, я не могу получить никаких записей. Я выполнил инструкции, содержащиеся в этом запись в блоге.

Создать запрос к таблице:

CREATE external TABLE mvc_test2 (
ROLE struct<Scope: string, Id: string>,
ACCOUNT struct<ClientId: string, Id: string, Name: string>,
USER struct<Id: string, Name: string>,
IsAuthenticated INT,
Device struct<IpAddress: string>,
Duration double,
Id string,
ResultMessage string,
Application struct<Version: string, Build: string, Name: string>,
Timestamp string,
ResultCode INT
)
Partitioned by(year string, month string, day string)
ROW FORMAT SERDE 'org.openx.data.jsonserde.JsonSerDe'
LOCATION 's3://firehose-titlesdesk-logs/Mvc/'

Таблица создана успешно, и в сообщении о результате говорится:

«Запрос выполнен успешно. Если в вашей таблице есть разделы, вам необходимо загрузить эти разделы, чтобы иметь возможность запрашивать данные. Вы можете загрузить все разделы или загрузить их по отдельности. Если вы используете команду« Загрузить все разделы »(MSCK REPAIR TABLE), разделы должны быть в формате, понятном для Hive. Подробнее ".

Бег

msck repair table mvc_test2;

Получаю результат:

«Разделы не в хранилище метаданных: mvc_test2: 2017/06/06/21 mvc_test2: 2017/06/06/22»

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

Журналы хранятся в подпапках в формате год / месяц / день / час. например: 's3: // firehose-application-logs / process / year / month / day / hour'

Как правильно разделить данные?


person Fruitspunchsamurai    schedule 07.06.2017    source источник
comment
Если вы используете команду загрузить все разделы (MSCK REPAIR TABLE), разделы должны быть в формате, понятном Hive   -  person David דודו Markovitz    schedule 07.06.2017


Ответы (3)


Похоже, что формат вашего каталога 2017/06/06/22. Это несовместимо с разделами HIVE, которые имеют преобразование имен year=2017/month=06/day=06/hour=22.

Следовательно, текущий формат ваших данных не позволяет вам использовать разделы. Вам нужно будет переименовать каталоги или (желательно) обработать ваши данные через HIVE, чтобы сохранить их в правильном формате.

См. Также: Анализ данных в S3 с использованием Amazon Athena

person John Rotenstein    schedule 08.06.2017

добавить каждый раздел по дате. Это быстрее и сэкономит вам больше денег. Загрузите только нужный вам раздел, а не все разделы.

ALTER TABLE mvc_test2 
ADD PARTITION (year='2017',month='06',day='06')
location 's3://firehose-titlesdesk-logs/Mvc/'

Вы можете загрузить больше разделов, изменив год, месяц и / или день по мере необходимости, просто убедитесь, что они действительны. Затем вы можете проверить, загружены ли ваши разделы, выполнив этот запрос:

show partitions mvc_test2
person Trung Nguyen    schedule 10.08.2017

AWS теперь поддерживает Athena Partition Projection, что позволяет автоматизировать управление разделами и автоматически добавляет новые разделы по мере добавления новых данных

https://docs.aws.amazon.com/athena/latest/ug/cloudtrail-logs.html#create-cloudtrail-table-partition-projection

person Ahmed Al-Haffar    schedule 25.03.2021