Amazon Data Firehose 示例 - Amazon Athena

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 值并使用存储位置模板生成分区位置列表。