Auswählen eines Datentabellenformats
Datentechniker stehen frühzeitig in jeder Datenpipeline vor einer kritischen Entscheidung: Welches Tabellenformat sollte Ihre Daten speichern? Diese Auswahl wirkt sich auf die Abfrageleistung, die Transaktionssicherheit, die Interoperabilität mit anderen Plattformen und die langfristige Wartung Ihrer Lakehouse-Architektur aus.
Azure Databricks unterstützt mehrere Speicherformate, die jeweils für unterschiedliche Szenarien entwickelt wurden. Wenn Sie ihre Unterschiede verstehen, können Sie das richtige Format für Ihre spezifischen Anforderungen auswählen.
Grundlegendes zu Dateiformaten im Vergleich zu Tabellenformaten
Vor dem Vergleichen von Optionen ist es wichtig, zwischen Dateiformaten und Tabellenformaten zu unterscheiden. Ein Dateiformat wie Parkett, CSV oder JSON definiert, wie Daten physisch auf dem Datenträger gespeichert werden. Ein Tabellenformat wie Delta Lake oder Apache Iceberg baut auf Dateiformaten auf, indem eine Metadatenebene hinzugefügt wird, die Transaktionen, Schemaänderungen und Datenspeicherorte nachverfolgt.
Sowohl Delta Lake als auch Apache Iceberg verwenden Parkett als zugrunde liegendes Dateiformat. Der Hauptunterschied liegt in der Metadatenebene, die erweiterte Features wie ACID-Transaktionen, Zeitreise und Schemaentwicklung ermöglicht.
Wie Parkett Daten anders speichert
Parkett verwendet Spaltenspeicher anstelle zeilenbasierter Lagerung. Dieser grundlegende Unterschied wirkt sich erheblich auf die Analyseabfrageleistung aus.
In zeilenbasierten Formaten wie CSV werden Daten nach Datensatz organisiert. Zum Lesen einer einzelnen Spalte muss jede Zeile in der Datei gescannt werden. In Spaltenformaten wie Parkett werden Daten für jede Spalte zusammen gespeichert. Wenn eine Abfrage nur bestimmte Spalten benötigt, liest Parkett nur diese Spalten und überspringt den Rest vollständig.
Parkett organisiert Daten in Zeilengruppen, die jeweils Spaltenblöcke enthalten. Jeder Spaltenabschnitt speichert Statistiken, einschließlich mindester und maximaler Werte für dieses Datensegment. Wenn Sie eine Abfrage mit einer Filterbedingung ausführen, überprüft das Abfragemodul diese Statistiken zuerst. Wenn der Filterwert außerhalb des Min/Max-Bereichs einer Zeilengruppe liegt, überspringt das Modul das Lesen dieses gesamten Abschnitts.
Dieser columnar-Ansatz bietet zwei Optimierungstechniken, die die Analyseleistung erheblich verbessern:
- Spaltenkürzung: Das Modul liest nur die Spalten, die Ihre Abfrageverweise enthalten, wodurch E/A erheblich reduziert wird.
- Prädikat-Pushdown: Filterbedingungen werden anhand von Spaltenstatistiken ausgewertet, bevor Daten gelesen und irrelevante Zeilengruppen vollständig übersprungen werden.
Bei analytischen Arbeitslasten, die in der Regel über viele Zeilen auf eine Teilmenge von Spalten zugreifen, übertrifft Parquet erheblich zeilenbasierte Formate.
Delta Lake als Standardformat
Delta Lake ist das Standardspeicherformat für alle Tabellen in Azure Databricks. Wenn Sie eine Tabelle ohne Angabe eines Formats erstellen, verwendet Azure Databricks automatisch Delta Lake.
Delta Lake erweitert Parkettdateien mit einem Transaktionsprotokoll , das jede Änderung in Ihrer Tabelle erfasst. Dieses Log ermöglicht mehrere Fähigkeiten, die Parquet allein nicht bietet:
ACID-Transaktionen: Mehrere gleichzeitige Leser und Autoren können ohne Datenbeschädigung auf dieselbe Tabelle zugreifen. Jede Transaktion wird entweder vollständig abgeschlossen oder hat keine Auswirkung.
Zeitreise: Abfragen früherer Versionen Ihrer Tabelle mithilfe von Zeitstempeln oder Versionsnummern. Führen Sie bei Bedarf ein Rollback von Änderungen durch.
Schemaerzwingung und Weiterentwicklung: Die Tabelle überprüft eingehende Daten anhand ihres definierten Schemas und hindert beschädigte oder inkompatible Daten daran, in Ihr Lakehouse zu gelangen. Wenn sich die Anforderungen ändern, können Sie neue Spalten hinzufügen, Datentypen ändern oder Spalten umbenennen, ohne vorhandene Daten neu zu schreiben.
Einheitliches Batch- und Streaming-System: Verwenden Sie dieselbe Tabelle sowohl als Batchquelle als auch als Streamingquelle oder -senke.
Delta Lake ist tief in die Azure Databricks-Plattform integriert. Features wie Liquid Clustering und Predictive Optimization sind sowohl für Delta Lake als auch für verwaltete Apache Iceberg-Tabellen im Unity-Katalog verfügbar. Ändern des Datenfeeds ist jedoch spezifisch für Delta Lake und basiert auf dessen Transaktionsprotokoll.
Für die meisten Szenarien in Azure Databricks ist Delta Lake die empfohlene Wahl. Es bietet die Leistungsfähigkeit von Parquet mit den Transaktionsgarantien, die für Produktionsdatensysteme erforderlich sind.
Apache Iceberg für plattformübergreifende Szenarien
Apache Iceberg ist ein alternatives offenes Tabellenformat, das Azure Databricks für verwaltete und fremde Tabellen unterstützt. Wie Delta Lake bietet Iceberg ACID-Transaktionen, Schema-Evolution und Zeitreisefunktionen, die auf Parquet-Dateien basieren.
Die hierarchische und klar definierte logische Struktur von Iceberg macht sie hochflexibel und unterstützt Skalierbarkeit und fortgeschrittene Optimierungen. Es unterstützt die Bereinigung von Manifesten, Statistiken auf Dateiebene, versteckte Partitionierung und Partitionsentwicklung.
Der Hauptgrund für die Wahl von Iceberg ist interoperabilität. Iceberg ist weit verbreitet über das Datenökosystem hinweg, darunter Plattformen wie Snowflake, Amazon Athena, Trino, Apache Spark und Apache Flink. Wenn Ihre Organisation Workloads auf mehreren Plattformen ausführt, die dieselben Tabellen lesen und schreiben müssen, bietet Iceberg ein gemeinsames Format, das alle Plattformen verstehen.
Unity Catalog kann Iceberg-Tabellen direkt verwalten, sodass Azure Databricks als Iceberg-Katalog für externe Engines dienen kann. Sie können auch Iceberg-Tabellen, die über andere Kataloge wie AWS Glue oder den Snowflake Horizon Catalog verwaltet werden, mittels Fremdtabellenverbindungen lesen.
Berücksichtigen Sie Iceberg in folgenden Fällen:
- Auf Ihre Daten muss von mehreren Verarbeitungsmodulen außerhalb von Azure Databricks zugegriffen werden.
- Ihre Organisation hat sich für Iceberg als Standard für plattformübergreifenden Datenaustausch entschieden.
- Sie integrieren sich in Systeme, die Delta Lake nicht unterstützen.
Für Workloads, die hauptsächlich in Azure Databricks ausgeführt werden, bleibt Delta Lake aufgrund seiner tieferen Plattformintegrations- und Optimierungsfeatures das empfohlene Format.
Wenn zeilenbasierte Formate angewendet werden
CSV und JSON bleiben gültige Optionen für bestimmte Szenarien, obwohl sie für umfangreiche Analysen weniger effizient sind.
Verwenden Sie CSV oder JSON, wenn:
- Sie erhalten Daten von externen Systemen in diesen Formaten als erste Landezone.
- Für das Debuggen oder schnelle Inspektion benötigen Sie lesbare Daten.
- Sie integrieren sich in Systeme, die nur textbasierte Formate unterstützen.
- Datenvolumes sind klein genug, sodass Leistungsunterschiede vernachlässigbar sind.
Um analytische Daten dauerhaft zu speichern, konvertieren Sie eingehende CSV- oder JSON-Dateien während der Aufnahme in Delta Lake-Tabellen . Diese Konvertierung erfasst die Effizienzgewinne des Spaltenspeichers beim Hinzufügen von Transaktionsgarantien.
Anwenden von Entscheidungskriterien
Die Auswahl eines Tabellenformats hängt von Ihren spezifischen Anforderungen ab. Beginnen Sie mit Delta Lake als Standardauswahl, und bewerten Sie Alternativen nur, wenn bestimmte Einschränkungen sie erfordern.
| Überlegung | Delta Lake | Apache Iceberg | CSV/JSON |
|---|---|---|---|
| Analyseleistung | Excellent (Hervorragend) | Excellent (Hervorragend) | Schlecht |
| ACID-Transaktionen | Yes | Yes | Nein |
| Zeitreise | Yes | Yes | Nein |
| Azure Databricks-Integration | Tief | Unterstützt | Basic |
| Plattformübergreifende Kompatibilität | Growing | Breit | Universal |
| Empfohlen für die Produktion | Yes | Ja (wenn Interoperabilität erforderlich) | Nein (nur Landezone) |
Ihre Wahl hängt auch von organisatorischen Standards ab. Wenn Ihr Architekturteam Konventionen für Tabellenformate festgelegt hat, richten Sie sich an diese Entscheidungen, um Konsistenz auf Ihrer Datenplattform aufrechtzuerhalten.