Разделы для журналов потока vpc

#amazon-athena

#amazon-athena

Вопрос:

Этот запрос работает так, как ожидалось.

 CREATE EXTERNAL TABLE IF NOT EXISTS vpc_flow_logs3 (
  version int,
  account string,
  interfaceid string,
  sourceaddress string,
  destinationaddress string,
  sourceport int,
  destinationport int,
  protocol int,
  numpackets int,
  numbytes bigint,
  starttime int,
  endtime int,
  action string,
  logstatus string
)  
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ' '
LOCATION 's3://todel162/AWSLogs/XXXXX/vpcflowlogs/us-east-1/'
TBLPROPERTIES ("skip.header.line.count"="1");
  

Но если я добавлю предложение parition, как предложено в документации, оно не прочитает ни одной строки. (Хотя таблица создана успешно)

https://docs.aws.amazon.com/athena/latest/ug/vpc-flow-logs.html

Другими словами, я не могу использовать разделы, используя это предложение в инструкции create table.

РАЗДЕЛЕН НА (строка dt)

Как мне создать таблицу с разделами для журналов потока vpc?

Ответ №1:

После создания таблицы с разделами вам также необходимо добавить в нее разделы. Для секционированных таблиц LOCATION свойство не указывает на данные таблицы. Вновь созданная разделенная таблица по существу пуста.

Существует много способов добавления разделов в разделенную таблицу. Журналы потока VPC не соответствуют схеме разделения Hive, что означает, что вы не можете использовать MSCK REPAIR TABLE для загрузки всех разделов. Вместо этого вам нужно вручную перечислить все разделы и добавить их либо с помощью BatchCreatePartition вызова API Glue, либо с помощью Athena, выполнив ALTER TABLE vpc_flow_logs3 ADD PARTITION … . Вы можете найти пример того, как это сделать для журналов потока, на шаге 4 руководства, на которое вы ссылаетесь.