以 Apache Parquet 格式为流日志创建表 - Amazon Athena

以 Apache Parquet 格式为流日志创建表

以下过程将以 Apache Parquet 格式为 Amazon VPC 流日志创建 Amazon VPC 表。

以 Parquet 格式为 Amazon VPC 流日志创建 Athena 表
  1. 按照 注意事项和限制 部分中的准则,在 Athena 控制台查询编辑器中输入类似以下内容的 DDL 语句。以下示例语句创建一个表,其中包含 Amazon VPC 流日志版本 2 到 5 的列,如 Parquet 格式的流日志记录中所示,Hive 按小时分区。如果您没有按小时分区,请删除 PARTITIONED BY 子句中的 hour

    CREATE EXTERNAL TABLE IF NOT EXISTS vpc_flow_logs_parquet ( version int, account_id string, interface_id string, srcaddr string, dstaddr string, srcport int, dstport int, protocol bigint, packets bigint, bytes bigint, start bigint, `end` bigint, action string, log_status string, vpc_id string, subnet_id string, instance_id string, tcp_flags int, type string, pkt_srcaddr string, pkt_dstaddr string, region string, az_id string, sublocation_type string, sublocation_id string, pkt_src_aws_service string, pkt_dst_aws_service string, flow_direction string, traffic_path int ) PARTITIONED BY ( `aws-account-id` string, `aws-service` string, `aws-region` string, `year` string, `month` string, `day` string, `hour` string ) ROW FORMAT SERDE 'org.apache.hadoop.hive.ql.io.parquet.serde.ParquetHiveSerDe' STORED AS INPUTFORMAT 'org.apache.hadoop.hive.ql.io.parquet.MapredParquetInputFormat' OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.parquet.MapredParquetOutputFormat' LOCATION 's3://amzn-s3-demo-bucket/prefix/AWSLogs/' TBLPROPERTIES ( 'EXTERNAL'='true', 'skip.header.line.count'='1' )
  2. 修改示例 LOCATION 's3://amzn-s3-demo-bucket/prefix/AWSLogs/' 以指向包含您的日志数据的 Amazon S3 路径。

  3. 在 Athena 控制台中运行查询。

  4. 如果数据采用 Hive 兼容格式,请在 Athena 控制台中运行以下命令,更新并加载元存储中的 Hive 分区。查询完成后,可以查询 vpc_flow_logs_parquet 表中的数据。

    MSCK REPAIR TABLE vpc_flow_logs_parquet

    如果您使用的不是 Hive 兼容数据,请运行 ALTER TABLE ADD PARTITION 以加载分区。

有关使用 Athena 查询 Parquet 格式 Amazon VPC 流日志的更多信息,请参阅 AWS 大数据博客中的文章 使用 Apache Pparquet 格式的 VPC 流日志优化性能并降低网络分析成本