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