Usando AWS re:Post, accetti AWS re:Post Termini di utilizzo

Perché la mia query MSCK REPAIR TABLE non aggiunge partizioni al catalogo dati di AWS Glue?

2 minuti di lettura
0

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

AWS UFFICIALE
AWS UFFICIALEAggiornata un anno fa