Quando eseguo la mia query MSCK REPAIR TABLE, Amazon Athena restituisce un elenco di partizioni. Tuttavia, Athena non riesce ad aggiungere le partizioni alla tabella nel catalogo dati di AWS Glue.
Breve descrizione
I seguenti motivi comuni impediscono ad Athena di aggiungere partizioni alle tabelle nel Data Catalog:
- L'utente o il ruolo di AWS Identity and Access Management (IAM) non dispone di una policy che consenta l'azione glue:BatchCreatePartition.
- Il percorso di Amazon Simple Storage Service (Amazon S3) è in maiuscolo anziché in minuscolo.
- Le partizioni non sono formattate come il formato in stile Hive, year=2023/month=01/day=01. Le partizioni sono invece in formato non Hive, /2023/01/01/.
Risoluzione
Consenti glue:BatchCreatePartition nella policy IAM
Rivedi le policy IAM associate all'utente o al ruolo che stai utilizzando per eseguire MSCK REPAIR TABLE. Quando utilizzi Data Catalog con Athena, la policy IAM deve consentire l'azione glue:BatchCreatePartition . Se la policy non consente tale azione, Athena non può aggiungere partizioni al metastore. Per un esempio di policy IAM che consente l'azione glue:BatchCreatePartition, consulta la policy gestita di AWS: AmazonAthenaFullAccess.
Cambia il percorso di Amazon S3 in lettere minuscole
Affinché MSCK REPAIR TABLE aggiunga le partizioni a Data Catalog, il nome del percorso di Amazon S3 deve essere in minuscolo.
Ad esempio, se il percorso Amazon S3 è userId, le seguenti partizioni non vengono aggiunte al catalogo dati:
- s3://awsdoc-example-bucket/path/userId=1/
- s3://awsdoc-example-bucket/path/userId=2/
- s3://awsdoc-example-bucket/path/userId=3/
Per risolvere questo problema, usa l'userid minuscolo:
- s3://awsdoc-example-bucket/path/userid=1/
- s3://awsdoc-example-bucket/path/userid=2/
- s3://awsdoc-example-bucket/path/userid=3/
Esegui il comando ALTER TABLE ADD PARTITION
Esegui il comando ALTER TABLE ADD PARTITION per aggiungere partizioni alla tabella di incollaggio per i dati partizionati in stile Hive e non in stile Hive.
La clausola LOCATION è obbligatoria per i dati partizionati in stile non Hive. Assicurati di includere il percorso completo di Amazon S3 per il prefisso che contiene i dati della partizione:
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/';
Informazioni correlate
Partizionamento dei dati in Athena
Azioni, risorse e chiavi di condizione per Amazon Athena
Azioni, risorse e chiavi di condizione per AWS Glue