雅典娜中的表格未使用vpc日志更新

时间:2019-01-03 13:37:13

标签: amazon-athena vpc

我有VPC流日志,其目的地是S3,S3存储桶= vpc_logs。在此存储桶下,将vpc记录上载到文件夹AWSLogs / accountId / vpcflowlogs / region / year / month / day / day / log_file_name.log.gz下。 我希望能够按照AWS中的建议使用Athena查看记录,但建议的查询是:

CREATE EXTERNAL TABLE IF NOT EXISTS vpc_flow_logs (
  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
)  
PARTITIONED BY (dt string)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ' '
LOCATION 's3://bucket_name/AWSLogs/account_id/vpcflowlogs/region/'
TBLPROPERTIES ("skip.header.line.count"="1");

然后,当我要查看记录时,我得到0条记录。我相信是因为该信息位于文件夹下。这是要运行的正确查询吗?

1 个答案:

答案 0 :(得分:0)

您的表未获取任何记录的原因是您要遵循的s3目录结构。由于表已分区,并且如果您希望Athena自动检测分区,则s3目录结构应如下所示:< / p>

s3://AWSLogs/.../.../.../year=2018/month=01/day=01/

如果在s3中具有以上键值对结构,则在创建表之后,可以使用以下查询自动添加分区:

msck repair table vpc_flow_logs

如果您无法控制目录结构,请参阅此link中的“ 在Athena中对数据进行分区以提高查询性能并降低成本”,其中说明了如何添加没有蜂巢样式分区目录结构时进行分区。

一种更简单但便宜的方法是运行crawler,即使您具有以下目录结构,它也将自动创建表和分区。您需要做的就是传递“ s3:// AWSLogs / accountId / vpcflowlogs / region /”作为爬虫的输入。

s3://.../.../.../.../year/month/day/