¿Cómo puedo crear y usar tablas con particiones en Amazon Athena?

6 minutos de lectura
0

Quiero crear tablas con particiones en Amazon Athena y utilizarlas para mejorar mis consultas.

Breve descripción

Al fragmentar las tablas de Athena en particiones, puede restringir la cantidad de datos escaneados por cada consulta, lo que mejora el rendimiento y reduce los costes. La partición divide la tabla en partes y conserva juntos los datos relacionados en función de los valores de las columnas. Las particiones actúan como columnas virtuales y ayudan a reducir la cantidad de datos escaneados por consulta.

Tenga en cuenta lo siguiente cuando cree una tabla con particiones de los datos:

  • Debe almacenar sus datos en cubos de Amazon Simple Storage Service (Amazon S3) como una partición.
  • Incluya las columnas de partición y la ubicación raíz de los datos de las particiones cuando cree la tabla.
  • Elija el enfoque adecuado para cargar las particiones en el Catálogo de datos de AWS Glue. La tabla hace referencia al catálogo de datos cuando ejecuta las consultas.
  • Utilice la proyección de particiones para datos con muchas particiones en Amazon S3.

Resolución

Estos son algunos de los aspectos que debe tener en cuenta cuando cree una tabla con particiones.

Almacenamiento en Amazon S3

Los datos se deben fragmentar en particiones y se deben almacenar en Amazon S3. Los datos de las particiones pueden estar en uno de los siguientes formatos:

  • Formato de estilo Hive (ejemplo: s3://doc-example-bucket/example-folder/year=2021/month=01/day=01/myfile.csv)
    Nota: La ruta incluye los nombres de las claves de partición y sus valores (ejemplo: año=2021)
  • Formato de estilo distinto de Hive (ejemplo: s3://doc-example-bucket/example-folder/2021/01/01/myfile.csv)

Inclusión de la información sobre particiones al crear la tabla

La instrucción CREATE TABLE debe incluir los detalles de la partición. Utilice PARTITIONED BY para definir las columnas de partición y LOCATION para especificar la ubicación raíz de los datos de las particiones. Ejecute una consulta similar a la siguiente:

CREATE EXTERNAL TABLE doc-example-table (
first string,
last string,
username string
)
PARTITIONED BY (year string, month string, day string)
STORED AS parquet
LOCATION 's3://doc-example-bucket/example-folder'

Sustituya lo siguiente en la consulta:

  • doc-example-table por el nombre de la tabla que está creando
  • doc-example-bucket por el nombre del bucket de S3 donde guarda la tabla
  • example-folder por el nombre de la carpeta de S3
  • first, last y username por los nombres de las columnas
  • year, month y day por los nombres de las columnas de las particiones

Carga de las particiones en el catálogo de datos con un enfoque adecuado al caso de uso

Después de crear la tabla, añada las particiones al catálogo de datos. Puede hacerlo mediante uno de los siguientes métodos:

  • Utilice la consulta MSCK REPAIR TABLE para los datos con formato de estilo Hive: El comando MSCK REPAIR TABLE analiza un sistema de archivos, como Amazon S3, en busca de particiones compatibles con Hive. El comando las compara con las particiones que ya están presentes en la tabla y, a continuación, agrega las particiones nuevas al catálogo de datos. Ejecute un comando similar al siguiente:
    Nota: Este no es el enfoque recomendado si tiene muchos miles de particiones. Es posible que sus consultas de DDL tengan problemas de tiempo de espera. Para obtener más información, consulte ¿Por qué mi consulta MSCK REPAIR TABLE no añade particiones al Catálogo de datos de AWS Glue?
MSCK REPAIR TABLE doc-example-table
  • Utilice la consulta ALTER TABLE ADD PARTITION para los datos con estilo de formato Hive o distinto de Hive: El comando ALTER TABLE ADD PARTITION agrega una o varias particiones al catálogo de datos. En el comando, especifique los pares de nombres y valores de la columna de partición junto con la ruta de Amazon S3 donde se almacenan los archivos de datos de esa partición. Puede añadir una partición o un lote de particiones por consulta si ejecuta comandos similares a los siguientes:
ALTER TABLE doc-example-table ADD PARTITION (year='2021', month='01', day='01') LOCATION 's3://doc-example-bucket/example-folder/2021/01/01/'
ALTER TABLE doc-example-table ADD
PARTITION (year='2021', month='01', day='01') LOCATION 's3://doc-example-bucket/example-folder/2021/01/01/'
PARTITION (year='2020', month='06', day='01') LOCATION 's3://doc-example-bucket/example-folder/2020/06/01/'
  • Utilice el rastreador de AWS Glue para los datos con formato de estilo Hive y distinto de Hive: Puedes usar el rastreador de Glue para inferir automáticamente el esquema de la tabla de su conjunto de datos, crear la tabla y, a continuación, añadir las particiones al catálogo de datos. O bien, puede usar el rastreador solo para añadir particiones a una tabla creada manualmente con la instrucción CREATE TABLE. Para usar el rastreador con el fin de agregar particiones, al definir el rastreador, especifique una o varias tablas del catálogo de datos existente como origen del rastreo en lugar de indicar los almacenes de datos. El rastreador rastrea los almacenes de datos especificados en las tablas del catálogo de datos. No se crean tablas nuevas. En su lugar, se actualizan las tablas creadas manualmente y se añaden nuevas particiones. Para obtener más información, consulte Opciones de configuración de rastreadores.
  • Utilice la proyección de particiones en el caso de datos con muchas particiones en Amazon S3: Si tiene datos con muchas particiones en Amazon S3, añadir particiones al catálogo de datos puede resultar poco práctico y llevar mucho tiempo. Las consultas en una tabla con muchas particiones no se completan rápidamente. En estos casos, puede utilizar la función de proyección de particiones para acelerar el procesamiento de las consultas en tablas con muchas particiones y automatizar la administración de particiones. En la proyección de particiones, los valores y las ubicaciones de las particiones se calculan a partir de la configuración en lugar de leerlos desde un repositorio, como el catálogo de datos. Esto significa que no es necesario añadir particiones al catálogo de datos con la proyección de particiones. Dado que las operaciones en memoria suelen ser más rápidas que las operaciones remotas, la proyección de particiones puede reducir el tiempo de ejecución de las consultas en tablas con muchas particiones. La función de proyección de particiones funciona actualmente con los tipos de columnas particiones inyectadas, valores enumerados, números enteros o fechas. Para obtener más información, consulte Proyección de particiones con Amazon Athena.

Información relacionada

¿Por qué no recibo ningún registro cuando consulto mi tabla de Amazon Athena?

OFICIAL DE AWS
OFICIAL DE AWSActualizada hace 4 años