Amazon Kinesis Data Firehose 示例 - Amazon Athena
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

Amazon Kinesis Data Firehose 示例

Kinesis Data Firehose 采用以下路径格式将数据存储在 Amazon S3 中:

s3://bucket/folder/yyyy/MM/dd/HH/file.extension

通常,要在不使用分区投影的情况下使用 Athena 查询 Kinesis Data Firehose 数据,您可以在 Kinesis Data Firehose 中为 Athena. 日志创建表。之后,在 AWS Glue 数据目录 创建分区时,您必须每小时向 Kinesis Data Firehose 中的表添加一次分区。

通过使用分区投影,您可以使用一次性配置来将分区的驻留位置告知 Athena 以下 CREATE TABLE 示例假定开始日期为 2018 年 1 月 1 日午夜。请注意,通过对日期范围的上限使用 NOW,可让新数据在适当的 UTC 时间自动变得可供查询。

CREATE EXTERNAL TABLE my_table ( ... ) ... PARTITIONED BY ( datehour STRING ) LOCATION "s3://bucket/table-name/" TBLPROPERTIES ( "projection.enabled" = "true", "projection.datehour.type" = "date", "projection.datehour.range" = "2018/01/01/00,NOW", "projection.datehour.format" = "yyyy/MM/dd/HH", "projection.datehour.interval" = "1", "projection.datehour.interval.unit" = "HOURS", "storage.location.template" = "s3://bucket/table-name/${datehour}" )

Kinesis Data Firehose 在 之后添加分区前缀 table-name 之前。在 Kinesis 控制台中,table-name 将显示在 Custom Prefix (自定义前缀) 字段中。

使用此表,您可以运行如下查询,而无需手动添加分区:

SELECT * FROM my_table WHERE datehour >= '2018/02/03/00' AND datehour < '2018/02/03/04'