Amazon Data Firehose 示例
当您使用 Firehose 将数据传输到 Amazon S3 时,默认配置会使用类似于以下示例的键写入对象:
s3://amzn-s3-demo-bucket/prefix/yyyy/MM/dd/HH/file.extension
要创建在查询时自动查找分区的 Athena 表,而不必在新数据到达时将它们添加到 AWS Glue Data Catalog,您可以使用分区投影。
以下 CREATE TABLE
示例使用了默认 Firehose 配置。
CREATE EXTERNAL TABLE my_ingested_data ( ... ) ... PARTITIONED BY ( datehour STRING ) LOCATION "s3://amzn-s3-demo-bucket/
prefix
/" TBLPROPERTIES ( "projection.enabled" = "true", "projection.datehour.type" = "date", "projection.datehour.format" = "yyyy/MM/dd/HH", "projection.datehour.range" = "2021/01/01/00,NOW", "projection.datehour.interval" = "1", "projection.datehour.interval.unit" = "HOURS", "storage.location.template" = "s3://amzn-s3-demo-bucket/prefix
/${datehour}/" )
CREATE TABLE
语句中的 TBLPROPERTIES
子句告诉 Athena 以下内容:
-
查询表时使用分区投影
-
分区键
datehour
的类型为date
(包括可选时间) -
如何格式化日期
-
日期时间范围 请注意,必须使用逗号来分隔值,而不是使用连字符。
-
Amazon S3 上数据所在的位置。
当您查询表时,Athena 会计算 datehour
值并使用存储位置模板生成分区位置列表。