Lesen von Delta Lakes-Tabellen (Synapse oder externer Speicherort)
Hinweis
Azure HDInsight on AKS wird am 31. Januar 2025 eingestellt. Vor dem 31. Januar 2025 müssen Sie Ihre Workloads zu Microsoft Fabric oder einem gleichwertigen Azure-Produkt migrieren, um eine abruptes Beendigung Ihrer Workloads zu vermeiden. Die verbleibenden Cluster in Ihrem Abonnement werden beendet und vom Host entfernt.
Bis zum Einstellungsdatum ist nur grundlegende Unterstützung verfügbar.
Wichtig
Diese Funktion steht derzeit als Vorschau zur Verfügung. Die zusätzlichen Nutzungsbedingungen für Microsoft Azure-Vorschauen enthalten weitere rechtliche Bestimmungen, die für Azure-Features in Betaversionen, in Vorschauversionen oder anderen Versionen gelten, die noch nicht allgemein verfügbar gemacht wurden. Informationen zu dieser spezifischen Vorschau finden Sie unter Informationen zur Vorschau von Azure HDInsight on AKS. Bei Fragen oder Funktionsvorschlägen senden Sie eine Anfrage an AskHDInsight mit den entsprechenden Details, und folgen Sie uns für weitere Updates in der Azure HDInsight-Community.
Dieser Artikel enthält eine Übersicht über das Lesen einer Delta Lake-Tabelle ohne Zugriff auf den Metastore (Synapse oder andere Metastores ohne öffentlichen Zugriff).
Sie können die folgenden Vorgänge für die Tabellen mithilfe von Trino mit HDInsight on AKS ausführen.
- ENTF
- UPDATE
- INSERT
- MERGE
Voraussetzungen
Erstellen von Delta Lake-Schemas und -Tabellen
In diesem Abschnitt wird gezeigt, wie Sie eine Delta-Tabelle für einen bereits vorhandenen Speicherort erstellen, vorausgesetzt, Sie haben bereits einen Delta Lake-Katalog konfiguriert.
Browsen Sie im Speicherkonto mithilfe von
Storage browser
im Azure-Portal zu dem Speicherort, in dem sich das Basisverzeichnis Ihrer Tabelle befindet. Wenn diese Tabelle aus Synapse stammt, befindet sie sich wahrscheinlich im Pfadsynapse/workspaces/.../warehouse/
, wird nach der Tabelle benannt und enthält ein_delta_log
-Verzeichnis. Wählen SieCopy URL
unter den drei Punkten aus, die sich neben dem Ordner befinden.Sie müssen diesen HTTP-Pfad in einen ABFS-Pfad (Azure Blob File System) konvertieren:
Der HTTP-Speicherpfad ist wie folgt strukturiert:
https://{{AZURE_STORAGE_ACCOUNT}}.blob.core.windows.net/{{AZURE_STORAGE_CONTAINER}}/synapse/workspaces/my_workspace/warehouse/{{TABLE_NAME}}/
ABFS-Pfade müssen wie folgt aussehen:
abfss://{{AZURE_STORAGE_CONTAINER}}@{{AZURE_STORAGE_ACCOUNT}}.dfs.core.windows.net/synapse/workspaces/my_workspace/warehouse/{{TABLE_NAME}}/
Beispiel:
abfss://container@storageaccount.dfs.core.windows.net/synapse/workspaces/workspace_name/warehouse/table_name/
Erstellen Sie ein Delta Lake-Schema in Trino.
CREATE SCHEMA delta.default;
Alternativ können Sie auch ein Schema in einem bestimmten Speicherkonto erstellen:
CREATE SCHEMA delta.default WITH (location = 'abfss://container@storageaccount.dfs.core.windows.net/trino/');
Verwenden Sie die
register_table
-Prozedur, um die Tabelle zu erstellen:CALL delta.system.register_table(schema_name => 'default', table_name => 'table_name', table_location => 'abfss://container@storageaccount.dfs.core.windows.net/synapse/workspaces/workspace_name/warehouse/table_name/');
Fragen Sie die Tabelle zur Bestätigung ab:
SELECT * FROM delta.default.table_name
Schreiben von Delta Lake-Tabellen in Synapse Spark
Verwenden Sie format("delta")
, um einen Datenrahmen als Delta-Tabelle zu speichern. Anschließend können Sie den Pfad verwenden, in dem Sie den Datenrahmen im Delta-Format gespeichert haben, um die Tabelle in Trino zu registrieren.
my_dataframe.write.format("delta").save("abfss://container@storageaccount.dfs.core.windows.net/synapse/workspaces/workspace_name/warehouse/table_name")