Ejemplo de Amazon Data Firehose - Amazon Athena

Ejemplo de Amazon Data Firehose

Cuando se usa Firehose para entregar datos a Amazon S3, la configuración predeterminada escribe objetos con claves que se parecen al siguiente ejemplo:

s3://amzn-s3-demo-bucket/prefix/yyyy/MM/dd/HH/file.extension

Para crear una tabla de Athena que encuentre las particiones de forma automática en el momento de la consulta, en lugar de tener que agregarlas al catálogo de datos de AWS Glue Data Catalog a medida que llegan nuevos datos, puede usar la proyección de particiones.

En el siguiente ejemplo de CREATE TABLE se usa la configuración predeterminada de 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}/" )

La cláusula TBLPROPERTIES de la instrucción CREATE TABLE indica a Athena lo siguiente:

  • Usar la proyección de la partición al consultar la tabla

  • La clave de partición datehour es de tipo date (que incluye una hora opcional)

  • Cómo se formatean las fechas

  • El rango de fechas y horas. Tenga en cuenta que los valores deben estar separados por una coma, no por un guion.

  • Dónde encontrar los datos en Amazon S3.

Al consultar la tabla, Athena calcula los valores de datehour y usa la plantilla de ubicación de almacenamiento para generar una lista de ubicaciones de partición.