¿Por qué mi consulta MSCK REPAIR TABLE no añade particiones al Catálogo de datos de AWS Glue?

3 minutos de lectura
0

Cuando ejecuto la consulta MSCK REPAIR TABLE, Amazon Athena devuelve una lista de particiones. Sin embargo, Athena no agrega las particiones a la tabla en el Catálogo de datos de AWS Glue.

Breve descripción

Es posible que Athena no pueda agregar particiones a las tablas del Catálogo de datos por alguno de los siguientes motivos habituales:

  • El usuario o el rol de AWS Identity and Access Management (IAM) no tiene una política que permita la acción glue:BatchCreatePartition.
  • La ruta de Amazon Simple Storage Service (Amazon S3) está en fuente Camel, no en minúsculas.
  • Las particiones no tienen el formato de estilo Hive, year=2023/month=01/day=01. En su lugar, las particiones tienen un formato que no es de estilo Hive, /2023/01/01/.

Solución

Cómo permitir glue:BatchCreatePartition en la política de IAM

Revise las políticas de IAM asociadas al usuario o al rol que utiliza para ejecutar MSCK REPAIR TABLE. Si utiliza el Catálogo de datos con Athena, la política de IAM debe permitir la acción glue:BatchCreatePartition. Si la política no permite esta acción, Athena no podrá añadir particiones al metaalmacén. Para ver un ejemplo de una política de IAM que permite la acción glue:BatchCreatePartition, consulte Política administrada de AWS: AmazonAthenaFullAccess.

Cambio de la ruta de Amazon S3 a minúsculas

Para que MSCK REPAIR TABLE añada las particiones al Catálogo de datos, el nombre de la ruta de Amazon S3 debe estar en minúsculas. 

Por ejemplo, si la ruta de Amazon S3 se ha indicado en fuente Camel, userId, las siguientes particiones no se añadirán al Catálogo de datos:

  • s3://awsdoc-example-bucket/path/userId=1/
  • s3://awsdoc-example-bucket/path/userId=2/
  • s3://awsdoc-example-bucket/path/userId=3/

Para solucionar este problema, indique userid en minúsculas:

  • s3://awsdoc-example-bucket/path/userid=1/
  • s3://awsdoc-example-bucket/path/userid=2/
  • s3://awsdoc-example-bucket/path/userid=3/

Ejecución del comando ALTER TABLE ADD PARTITION

Ejecute el comando ALTER TABLE ADD PARTITION para añadir particiones a la tabla de Glue tanto si los datos de las particiones se encuentran en estilo Hive como si su estilo es otro.

La cláusula LOCATION es obligatoria en el caso de los datos de particiones en un estilo distinto de Hive. Asegúrese de incluir la ruta completa de Amazon S3 para el prefijo que contiene los datos de la partición:

ALTER TABLE orders ADD

PARTITION (year = '2023', month = '01', day ='01')
LOCATION 's3://mystorage/path/to/test/'

PARTITION (year = '2023', month = '01', day ='02')
LOCATION 's3://mystorage/path/to/test/';

Información relacionada

Particiones de datos en Athena

Acciones, recursos y claves de condición para Amazon Athena

Acciones, recursos y claves de condición para AWS Glue

OFICIAL DE AWS
OFICIAL DE AWSActualizada hace un año