

# 以 Apache Parquet 格式为流日志创建表
<a name="vpc-flow-logs-parquet"></a>

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

**以 Parquet 格式为 Amazon VPC 流日志创建 Athena 表**

1. 按照 [注意事项和限制](vpc-flow-logs.md#vpc-flow-logs-common-considerations) 部分中的准则，在 Athena 控制台查询编辑器中输入类似以下内容的 DDL 语句。以下示例语句创建一个表，其中包含 Amazon VPC 流日志版本 2 到 5 的列，如 Parquet 格式的[流日志记录](https://docs.aws.amazon.com/vpc/latest/userguide/flow-logs.html#flow-log-records)中所示，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'
     )
   ```

1. 修改示例 `LOCATION 's3://amzn-s3-demo-bucket/prefix/AWSLogs/'` 以指向包含您的日志数据的 Amazon S3 路径。

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

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

   ```
   MSCK REPAIR TABLE vpc_flow_logs_parquet
   ```

   如果您使用的不是 Hive 兼容数据，请运行 [ALTER TABLE ADD PARTITION](alter-table-add-partition.md) 以加载分区。

有关使用 Athena 查询 Parquet 格式 Amazon VPC 流日志的更多信息，请参阅 *AWS 大数据博客*中的文章 [使用 Apache Pparquet 格式的 VPC 流日志优化性能并降低网络分析成本](https://aws.amazon.com/blogs/big-data/optimize-performance-and-reduce-costs-for-network-analytics-with-vpc-flow-logs-in-apache-parquet-format/)。