vpc流日志的分区

时间:2019-04-14 05:20:44

标签: 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语句中使用此子句使用分区。

  

PARTITIONED BY(dt字符串)

如何为vpc流日志创建带有分区的表?

1 个答案:

答案 0 :(得分:1)

创建分区表后,还需要向其添加分区。对于分区表,LOCATION属性不指向表的数据。新创建的分区表实际上是空的。

有很多方法可以将分区添加到分区表中。 VPC流日志未遵循Hive分区方案,这意味着您无法使用MSCK REPAIR TABLE加载所有分区。相反,您必须手动列出所有分区,并使用Glue的BatchCreatePartition API调用或通过运行ALTER TABLE vpc_flow_logs3 ADD PARTITION …使用Athena来添加它们。您可以在链接到的指南的第4步中找到有关如何对流日志进行操作的示例。