Durch die Nutzung von AWS re:Post stimmt du den AWS re:Post Nutzungsbedingungen

Warum fügt meine MSCK REPAIR TABLE-Abfrage keine Partitionen zum AWS Glue Data Catalog hinzu?

Lesedauer: 2 Minute
0

Wenn ich meine MSCK REPAIR TABLE-Abfrage ausführe, gibt Amazon Athena eine Liste von Partitionen zurück. Athena kann die Partitionen jedoch nicht zur Tabelle im AWS-Glue-Datenkatalog hinzufügen.

Kurzbeschreibung

Die folgenden häufigen Gründe führen dazu, dass Athena keine Partitionen zu Tabellen im Datenkatalog hinzufügt:

  • Der AWS Identity and Access Management (IAM)- Benutzer oder die -Rolle verfügt über keine Richtlinie, die die Aktion glue:BatchCreatePartition zulässt.
  • Der Amazon Simple Storage Service (Amazon S3)-Pfad wird in Kamelbuchstaben statt in Kleinbuchstaben geschrieben.
  • Die Partitionen sind nicht im Hive-Format formatiert, Jahr=2023/Monat=01/Tag=01. Stattdessen haben die Partitionen das Format /2023/01/01/, das kein HIVE-Format ist.

Behebung

glue:BatchCreatePartition in der IAM-Richtlinie zulassen

Überprüfen Sie die IAM-Richtlinien, die dem Benutzer oder der Rolle zugeordnet sind, die zum Ausführen von MSCK REPAIR TABLE verwenden wird. Wenn Sie den Datenkatalog mit Athena verwenden, muss die IAM-Richtlinie die Aktion glue:BatchCreatePartition zulassen. Wenn die Richtlinie diese Aktion nicht zulässt, kann Athena dem Metastore keine Partitionen hinzufügen. Ein Beispiel für eine IAM-Richtlinie, die die Aktion glue:BatchCreatePartition erlaubt, finden Sie in der von AWS verwalteten Richtlinie: AmazonAthenaFullAccess.

Ändern Sie den Amazon S3-Pfad zu Kleinbuchstaben

Damit MSCK REPAIR TABLE die Partitionen zum Datenkatalog hinzufügen kann, muss der Amazon S3-Pfadname in Kleinbuchstaben geschrieben werden.

Wenn der Amazon S3-Pfad in Kamelbuchstaben ist, beispielsweise userId, werden die folgenden Partitionen nicht zum Datenkatalog hinzugefügt:

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

Verwenden Sie die userid in Kleinbuchstaben, um dieses Problem zu beheben:

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

Ausführen des Befehls ALTER TABLE ADD PARTITION

Führen Sie den Befehl ALTER TABLE ADD PARTITION aus, um der Glue-Tabelle Partitionen sowohl für partitionierte Daten im Hive-Stil als auch für andere partitionierte Daten hinzuzufügen.

Die Klausel LOCATION ist für partitionierte Daten im Nicht-HIVE-Stil erforderlich. Stellen Sie sicher, dass Sie den vollständigen Amazon S3-Pfad für das Präfix angeben, das die Partitionsdaten enthält:

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/';

Ähnliche Informationen

Partitionierung von Daten in Athena

Aktionen, Ressourcen und Bedingungsschlüssel für Amazon Athena

Aktionen, Ressourcen und Bedingungsschlüssel für AWS Glue

AWS OFFICIAL
AWS OFFICIALAktualisiert vor einem Jahr