Configuración de la proyección de particiones - Amazon Athena

Configuración de la proyección de particiones

Configurar la proyección de particiones en las propiedades de una tabla es un proceso de dos pasos:

  1. Especifique los intervalos de datos y los patrones relevantes para cada columna de partición, o utilice una plantilla personalizada.

  2. Habilite la proyección de particiones para la tabla.

nota

Antes de agregar propiedades de proyección de particiones a una tabla existente, la columna de partición para la que va a configurar las propiedades de proyección de particiones ya debe existir en el esquema de la tabla. Si la columna de partición aún no existe, debe agregar una columna de partición a la tabla existente manualmente. AWS Glue no realiza este paso automáticamente.

En esta sección se muestra cómo establecer estas propiedades de tabla para AWS Glue. Para configurarlas, puede utilizar la consola de AWS Glue, las consultas CREATE TABLE de Athena o las operaciones de AWS Glue API. El siguiente procedimiento muestra cómo establecer las propiedades en la consola de AWS Glue.

: cómo configurar y habilitar la proyección de particiones mediante la consola de AWS Glue
  1. Inicie sesión en la AWS Management Console y abra la consola de AWS Glue en https://console.aws.amazon.com/glue/.

  2. Seleccione la pestaña Tablas.

    En la pestaña Tablas puede editar tablas existentes o elegir Agregar tablas para crear otras nuevas. Para obtener información sobre cómo agregar tablas manualmente o con un rastreador, consulte Trabajo con tablas en la consola de AWS Glue en la Guía para desarrolladores de AWS Glue.

  3. En la lista de tablas, elija el vínculo de la tabla que desea editar.

    En la consola de AWS Glue, elija una tabla para editar.
  4. Seleccione Acciones, Editar la tabla.

  5. En la página Editar la tabla, en la sección Propiedades de la tabla, agregue el siguiente par de clave-valor en cada columna particionada:

    1. En Clave, añada projection.columnName.type.

    2. En Valor, añada uno de los tipos admitidos: enum, integer, date, o injected. Para obtener más información, consulte Tipos admitidos para la proyección de particiones.

  6. Siguiendo las instrucciones de Tipos admitidos para la proyección de particiones, añada pares clave-valor adicionales de acuerdo con sus requisitos de configuración.

    La siguiente configuración de tabla de ejemplo configura la columna year para la proyección de particiones, lo que restringe los valores que se pueden devolver a un intervalo comprendido entre 2010 y 2016.

    Configuración de la proyección de particiones para una columna de partición en las propiedades de la tabla de la consola de AWS Glue.
  7. Añada un par clave-valor para habilitar la proyección de particiones. En Clave, escriba projection.enabled, y en su Valor, escriba true.

    nota

    Puede deshabilitar la proyección de particiones en esta tabla en cualquier momento estableciendo projection.enabled como false.

  8. Cuando termine de actualizar las etiquetas, elija Guardar.

  9. En el Editor de consultas de Athena, pruebe la consulta de las columnas que configuró para la tabla.

    La siguiente consulta de ejemplo utiliza SELECT DISTINCT para devolver los valores únicos de la columna year. La base de datos contiene datos de 1987 a 2016, pero la propiedad projection.year.range restringe los valores devueltos a los años 2010 a 2016.

    Consultar una columna que utiliza la proyección de particiones.
    nota

    Si establece projection.enabled como true pero no puede configurar una o más columnas de partición, recibirá un mensaje de error como el siguiente:

    HIVE_METASTORE_ERROR: Table database_name.table_name is configured for partition projection, but the following partition columns are missing projection configuration: [column_name] (table database_name.table_name).

Procedimientos para especificar ubicaciones de almacenamiento de S3 personalizadas

Al editar propiedades de tabla en AWS Glue, también puede especificar una plantilla de ruta de Amazon S3 personalizada para las particiones proyectadas. Una plantilla personalizada permite a Athena asignar correctamente valores de partición a ubicaciones de archivos de Amazon S3 personalizadas que no siguen un patrón .../column=value/... típico.

El uso de una plantilla personalizada es opcional. Sin embargo, si utiliza una plantilla personalizada, la plantilla debe contener un marcador de posición para cada columna de partición. Las ubicaciones con plantilla deben terminar con una barra diagonal para que los archivos de datos particionados se alojen en una “carpeta” por partición.

Para especificar una plantilla de ubicación de partición personalizada
  1. Siguiendo los pasos para configurar y habilitar la proyección de particiones mediante la consola de AWS Glue, agregue un par clave-valor adicional que especifique una plantilla personalizada de la siguiente manera:

    1. En Clave, escriba storage.location.template.

    2. En Valor, especifique una ubicación que incluya un marcador de posición para cada columna de partición. Asegúrese de que cada marcador de posición (y la ruta de S3 en sí) termine con una sola barra diagonal.

      En los siguientes valores de plantilla de ejemplo se asume una tabla con columnas de partición a, b y c.

      s3://amzn-s3-demo-bucket/table_root/a=${a}/${b}/some_static_subdirectory/${c}/
      s3://amzn-s3-demo-bucket/table_root/c=${c}/${b}/some_static_subdirectory/${a}/${b}/${c}/${c}/

      En la misma tabla, el siguiente valor de plantilla de ejemplo no es válido porque no contiene marcador de posición para la columna c.

      s3://amzn-s3-demo-bucket/table_root/a=${a}/${b}/some_static_subdirectory/
  2. Seleccione Apply.