Delta-Lake-Metadaten synchronisieren
Athena synchronisiert Tabellenmetadaten, einschließlich Schema, Partitionsspalten und Tabelleneigenschaften, mit AWS Glue, wenn Sie Athena zum Erstellen Ihrer Delta-Lake-Tabelle verwenden. Im Laufe der Zeit können diese Metadaten deren Synchronisierung mit den zugrunde liegenden Tabellenmetadaten im Transaktionsprotokoll verlieren. Um Ihre Tabelle auf dem neuesten Stand zu halten, können Sie eine der folgenden Optionen auswählen:
-
Verwenden Sie den AWS Glue-Crawler für Delta-Lake-Tabellen. Weitere Informationen finden Sie unter Einführung der nativen Delta-Lake-Tabellenunterstützung mit AWS Glue-Crawlern
im AWS-Big-Data-Blog und Planen eines AWS Glue-Crawlers im AWS Glue-Entwicklerhandbuch. -
Die Tabelle fallen lassen und in Athena neu erstellen.
-
Verwenden Sie das SDK, die CLI oder die AWS Glue-Konsole, um das Schema in manuell in AWS Glue zu aktualisieren.
Beachten Sie, dass für die folgenden Features Ihr AWS Glue-Schema immer dasselbe Schema wie das Transaktionsprotokoll haben muss:
-
Lake Formation
-
Ansichten
-
Zeilen- und Spaltenfilter
Wenn Ihr Workflow keine dieser Funktionen benötigt und Sie es vorziehen, diese Kompatibilität nicht aufrechtzuerhalten, können Sie CREATE TABLE-DDL in Athena verwenden und dann den Amazon-S3-Pfad als SerDe-Parameter in AWS Glue hinzufügen.
Sie können das folgende Verfahren verwenden, um eine Delta-Lake-Tabelle mit Athena und AWS Glue-Konsolen zu erstellen.
Zur Erstellung einer Delta-Lake-Tabelle mit den Athena- und AWS Glue-Konsolen
Öffnen Sie die Athena-Konsole unter https://console.aws.amazon.com/athena/
. -
Verwenden Sie im Athena-Abfrage-Editor die folgende DDL, um Ihre Delta-Lake-Tabelle zu erstellen. Beachten Sie, dass bei Verwendung dieser Methode der Wert für
TBLPROPERTIES'spark.sql.sources.provider' = 'delta'sein muss und nicht'table_type' = 'delta'.Beachten Sie, dass dasselbe Schema (mit einer einzigen Spalte namens
colvom Typarray<string>) eingefügt wird, wenn Sie Apache Spark (Athena für Apache Spark) oder die meisten anderen Engines verwenden, um Ihre Tabelle zu erstellen.CREATE EXTERNAL TABLE [db_name.]table_name(col array<string>) LOCATION 's3://amzn-s3-demo-bucket/your-folder/' TBLPROPERTIES ('spark.sql.sources.provider' = 'delta') Öffnen Sie die AWS Glue-Konsole unter https://console.aws.amazon.com/glue/
. -
Wählen Sie im Navigationsbereich unter Data Catalog die Option Tabellen.
-
Wählen Sie in der Tabellenliste den Link für Ihre Tabelle aus.
-
Wählen Sie auf der Seite für die Tabelle Aktionen und Tabelle bearbeiten aus.
-
Fügen Sie im Abschnitt Serde-Parameter den Schlüssel
pathmit dem Werts3://amzn-s3-demo-bucket/hinzu.your-folder/ -
Wählen Sie Speichern.
Um eine Delta-Lake-Tabelle mit AWS CLI zu erstellen, geben Sie einen Befehl wie den folgenden ein.
aws glue create-table --database-name dbname \ --table-input '{"Name" : "tablename", "StorageDescriptor":{ "Columns" : [ { "Name": "col", "Type": "array<string>" } ], "Location" : "s3://amzn-s3-demo-bucket/<prefix>/", "SerdeInfo" : { "Parameters" : { "serialization.format" : "1", "path" : "s3://amzn-s3-demo-bucket/<prefix>/" } } }, "PartitionKeys": [], "TableType": "EXTERNAL_TABLE", "Parameters": { "EXTERNAL": "TRUE", "spark.sql.sources.provider": "delta" } }'