Kurs
Apache Iceberg Erklärt: Ein kompletter Leitfaden für Anfänger
Wenn du mit der Verarbeitung großer Datenmengen arbeitest, weißt du, dass die Verwaltung und Analyse von unorganisierten Datenbeständen schwierig und fehleranfällig sein kann. Das Risiko, wertvolle Daten durch einen einfachen Fehler, wie z. B. einen versehentlichen Löschbefehl, zu verlieren, ist eine ständige Sorge.
Apache Iceberg löst diese Herausforderungen, indem es ein robustes und zuverlässiges Tabellenformat bereitstellt, das Rollbacks unterstützt und frühere Zustände deiner Daten wiederherstellt. Dies gewährleistet die Integrität und Konsistenz der Daten und macht die Datenverwaltung effizienter und weniger fehleranfällig.
In diesem Tutorium erklären wir, was Apache Iceberg ist, warum es verwendet wird und wie es funktioniert. Außerdem erfährst du anhand praktischer Schritt-für-Schritt-Anleitungen, wie du damit loslegen kannst, um deine Daten effektiver zu verwalten und zu analysieren.
Was ist ein Apache-Eisberg?
Apache Iceberg ist ein offenes Tabellenformat, das für den effizienten Umgang mit großen analytischen Datensätzen entwickelt wurde. Sie bietet eine leistungsstarke Tabellenstruktur, die die Vorteile traditioneller Datenbanken, wie SQL-Abfragen, ACID-Konformität und Partitionierung, auf deine Dateien überträgt.
Apache Iceberg fungiert im Wesentlichen als Linse, die es dir ermöglicht, eine Sammlung von Datendateien so zu betrachten und zu verwalten, als ob es sich um eine einzige, zusammenhängende Tabelle handelt.
Der Hauptvorteil von Apache Iceberg ist seine Fähigkeit, große Datenmengen in einer hochoptimierten Weise zu verarbeiten. Sie unterstützt Funktionen wie Schemaentwicklung, versteckte Partitionierung und Zeitreisen und ist damit eine robuste Lösung für die Verwaltung komplexer Datenworkflows.
Da Iceberg die Komplexität der zugrunde liegenden Speicherformate abstrahiert, ermöglicht es eine effiziente Datenverwaltung und -abfrage und ist damit die ideale Wahl für die Verarbeitung von Big Data.
Apache Iceberg Geschichte
Netflix entwickelte Apache Iceberg im Jahr 2017, um die Einschränkungen von Hive zu beseitigen, insbesondere bei der inkrementellen Verarbeitung und dem Streaming von Daten. 2018 spendete Netflix Iceberg an die Apache Software Foundation und machte es damit zu einem Open-Source-Projekt.
Seitdem hat sich Apache Iceberg zu einem Eckpfeiler für moderne Data-Lake-Architekturen entwickelt und ist in verschiedenen Branchen weit verbreitet.
Das Projekt hat sich kontinuierlich weiterentwickelt und Funktionen wie versteckte Partitionierung und Schema-Evolution integriert, um den Anforderungen großer Datenumgebungen gerecht zu werden.
Im Jahr 2024 gab Databricks die Übernahme von Tabular bekannt, einem Datenmanagement-Unternehmen, das von den ursprünglichen Schöpfern von Apache Iceberg gegründet wurde. Diese Übernahme zielt darauf ab, Apache Iceberg und Delta Lake zu vereinheitlichen, die Datenkompatibilität zu verbessern und die Entwicklung hin zu einem einzigen, offenen Interoperabilitätsstandard voranzutreiben.
Zeitleiste der Apache Iceberg Entwicklung
Jahr |
Event |
2017 |
Netflix entwickelt Apache Iceberg, um die Einschränkungen von Hive zu beseitigen, insbesondere bei inkrementeller Verarbeitung und Streaming-Daten. |
2018 |
Netflix spendet Apache Iceberg an die Apache Software Foundation und macht es damit zu einem Open-Source-Projekt. |
2019 |
Apache Iceberg wird von verschiedenen Branchen wegen seiner skalierbaren und effizienten Datenverwaltungsfunktionen eingesetzt. Funktionen wie Schema-Evolution und versteckte Partitionierung werden eingeführt. |
2020 |
Die Beiträge der Gemeinschaft und die Akzeptanz wachsen weiter, mit Verbesserungen der Leistung und neuen Funktionen wie Zeitreisen und Metadatenmanagement. |
2021 |
Apache Iceberg setzt sich als bevorzugtes Tabellenformat für Data Lakes durch und lässt sich in die wichtigsten Big Data-Tools und -Plattformen integrieren. |
2022 |
Es wurden neue Funktionen und Optimierungen hinzugefügt, die die Unterstützung von Iceberg für komplexe Daten-Workflows und große Datenumgebungen verbessern. |
2023 |
Apache Iceberg wird ständig weiterentwickelt, wobei der Schwerpunkt auf der Verbesserung der Datenkompatibilität und Interoperabilität mit anderen Datenformaten und Systemen liegt. |
2024 |
Databricks hat seine Vereinbarung zur Übernahme von Tabular bekannt gegeben. Diese Übernahme zielt darauf ab, Iceberg und Delta Lake zu vereinen. |
Wofür wird der Apache Iceberg verwendet?
Wie wir bereits gesehen haben, ist Apache Iceberg ein leistungsstarkes Tool für das Datenmanagement und die Datenanalyse in großen Umgebungen.
Hier ist ein genauerer Überblick darüber, wofür Apache Iceberg verwendet wird.
Daten auswerten
Die Verwendung von Dateiformaten wie ORC oder Parquet ist einfach zu implementieren, aber die Durchführung von Analysen auf diesen Formaten ist ineffizient. Iceberg stellt ihnen jedoch ein Tabellenformat mit Metadateninformationen zur Verfügung, um Abfragen zu optimieren.
In Rohdaten-Dateien wird zum Beispiel nicht gespeichert, zu welcher Tabelle sie gehören, aber in den Metadaten-Dateien von Iceberg schon. So können Abfrage-Engines entscheiden, welche Tabellen gelesen und welche übersprungen werden sollen, was die Abfrageeffizienz erheblich verbessert.
Metadaten-Dateien speichern diese Art von Informationen für eine effiziente Abfrage. Abfragesprachen suchen zuerst nach dem relevanten Dateinamen in den Metadaten und holen nur diese Datei für eine schnelle Abfrage, wodurch unnötiges Lesen von Daten vermieden wird.
Partitionsbeschneidung
Partition Pruning ist eine Technik, bei der irrelevante Daten übersprungen und nur die notwendigen Daten bearbeitet werden.
Wenn deine Partitionsspalte zum Beispiel "Datum" heißt und du einen bestimmten Datumsbereich angibst, liest die Abfrage nur Daten innerhalb dieses Bereichs. Dadurch wird die Datenmenge, die von der Festplatte gelesen wird, reduziert und die Abfrage von Iceberg Tabellen wird schneller und effizienter.
Zeitreise
Die Zeitreise ist eine Funktion, mit der du auf ältere Versionen deiner Daten zugreifen kannst, indem du Schnappschüsse von einem bestimmten Zeitpunkt abrufst.
Ein Snapshot ist ein vollständiger Satz von Datendateien zu einem bestimmten Zeitpunkt.
In den Metadaten-Dateien werden Lernpfade, Zeitstempel und Verlaufsdetails gespeichert, sodass jeder Lernpfad anhand seiner ID oder seines Zeitstempels aufgerufen werden kann.
Integrationen
Viele beliebte Speichersysteme wie Google Cloud, AWS und Microsoft Azure unterstützen das Iceberg-Tabellenformat. Du kannst Datendateien auf diesen Cloud-Plattformen speichern und einen externen oder integrierten Katalogdienst nutzen, um auf ihre Metadaten zu verweisen.
Sobald der Katalogdienst konfiguriert ist, kannst du Big-Data-Verarbeitungsframeworks wie Apache Spark oder Apache Flink verwenden.
Iceberg unterstützt außerdem verschiedene Abfrage-Engines wie SQL, Trino und Presto und ermöglicht so eine nahtlose Integration in bestehende Daten-Workflows.
Community
Apache Iceberg hat eine aktive Community und eine Online-Präsenz auf verschiedenen Kooperationsplattformen wie Twitter und Github. Außerdem gibt es einen eigenen Slack-Arbeitsbereich für diejenigen, die an den neuesten Entwicklungsgesprächen teilnehmen wollen.
Open-Source-Mitwirkende und Iceberg-Entwickler sind über soziale Plattformen für die Lerngemeinschaft zugänglich. Das macht es einfach, eine Lösung zu finden, wenn du bei der Implementierung von Iceberg-Funktionen auf Probleme stößt.
Apache Iceberg Kernkonzepte
Apache Iceberg stellt eine Reihe von Kernkonzepten vor, die eine effiziente Datenverwaltung und -abfrage ermöglichen. In diesem Abschnitt werden wir sie überprüfen.
Metadaten-Management
Iceberg verwaltet Tabellenschemata, Partitionen, Dateispeicherorte und mehr über seine Metadatenschicht, die Metadaten, Manifestlisten und Manifestdateien im JSON-Format verwaltet.
- Metadaten-Datei: Lernpfad für das Schema und die Partitionen der Tabelle.
- Manifestdateien: Sie enthalten Informationen auf Dateiebene, z. B. den Speicherort, die Größe, die Partition und die Zeilen- und Spaltenstatistiken einer Datendatei.
Iceberg unterstützt die Versionierung durch Snapshot-Metadaten. Sie speichert Details über den Zeitstempel des Snapshots, die Partition und die relevanten Datendateien. Ein Snapshot ist eine Übersicht über deine gesamten Daten zu einem bestimmten Zeitpunkt.
Schema-Entwicklung
Unter Schemaentwicklung versteht man die Anpassung eines Tabellenschemas an neue Datenelemente oder veränderte Anforderungen. Apache Iceberg unterstützt die systemeigene Schemaentwicklung und ermöglicht so Schemaaktualisierungen ohne kostspielige Datenumschreibungen oder Migrationen.
Wenn du zum Beispiel Mitarbeiterdaten pflegst und eine neue Spalte für Leistungskennzahlen hinzufügen möchtest, kannst du eine Spalte "employee_performance" hinzufügen. Iceberg aktualisiert seine Metadaten, um diese Spalte aufzunehmen, ohne die bestehenden Daten zu beeinflussen. Die neue Spalte hat zunächst Standardwerte und wird aktualisiert, wenn neue Datensätze eingefügt werden.
Partitioning
Bei der Partitionierung werden die Daten in kleinere Teilmengen aufgeteilt, so dass du nur auf die für eine Abfrage benötigten Daten zugreifen kannst, anstatt den gesamten Datensatz zu lesen.
Iceberg unterstützt viele Partitionierungsstrategien, zum Beispiel:
- Bereichsaufteilung: Teilt Daten auf der Grundlage eines Wertebereichs in der Partitionsspalte, z. B. bestimmte Datumsangaben, numerische Werte oder String-Einträge.
- Hash-Partitionierung: Wendet eine Hash-Funktion auf den Partitionsschlüssel an, um die Daten zu teilen.
- Partitionierung abschneiden: Schneidet die Werte einer Partitionsspalte ab und gruppiert die Daten. Wenn du zum Beispiel die Postleitzahlen 533405, 533404, 533689, 533098, 535209 und 535678 auf 3 Ziffern verkürzt, werden die Daten zu "533" und "535" zusammengefasst.
- Listenaufteilung: Gleicht die Werte der Partitionsschlüssel mit den Werten in einer Liste ab und teilt die Daten entsprechend auf. Dies ist für kategorische Werte in der Trennungsspalte geeignet. Zum Beispiel die Unterteilung von Laptop-Unternehmen in Gruppen wie "Lenovo", "Apple" und "HP".
Schnappschüsse
Ein Snapshot ist ein Satz von Manifestdateien, die zu einem bestimmten Zeitpunkt gültig sind. Jede Änderung, die du an den Daten vornimmst, erzeugt einen neuen Snapshot mit aktualisierten Manifestdateien und Metadaten.
Iceberg arbeitet mit Snapshot-basierten Abfragen, d.h. du kannst auf den gesamten Datensatz zu einem bestimmten Zeitpunkt zugreifen, indem du einen bestimmten Zeitstempel abrufst. So kannst du auf historische Daten zugreifen und im Falle eines Datenverlusts zu früheren Versionen zurückkehren.
Technische Architektur von Apache Iceberg
Apache Iceberg speichert die Daten nicht in Tabellen. Stattdessen werden die Datendateien so organisiert, dass sie in einer einzigen Tabelle angezeigt werden.
Schauen wir uns die Architektur an, die das möglich macht.
Eisberg-Katalog
Die Katalogebene enthält einen Verweis oder Zeiger auf die aktuelle Metadaten-Datei der Tabelle. Immer wenn du Daten änderst, wird eine neue Metadatendatei geschrieben, und der Zeiger zeigt jetzt auf die neueste Metadatendatei im Protokoll.
Diese Schicht erleichtert die ACID-Konformität von Iceberg-Tabellen. So sind z.B. laufende Änderungen für andere Transaktionen nicht sichtbar, bis sie abgeschlossen und in die Tabelle übertragen wurden. Bis dahin bezieht sich der Zeiger auf die aktuelle Metadaten-Datei.
Insgesamt vereinfachen Kataloge die Verwaltung der ACID-Konformität in Iceberg-Tabellen, indem sie auf bestimmte Versionen von Metadaten-Dateien verweisen.
Metadaten-Ebene
Diese Ebene enthält drei Arten von Dateien:
- Metadaten-Dateien: In diesen Dateien werden das Schema der Tabelle, der Speicherort, Partitionsinformationen, Snapshot-Zeitstempel und andere Informationen gespeichert.
- Manifest-Dateien: Lernpfade in Manifestdateien verfolgen Metadaten auf Dateiebene. Sie speichern Partitionsinformationen, Statistiken wie Zeilenzahl, Spaltenzahl, Snapshot-Details und das Dateiformat für jede Datendatei.
- Manifestlisten: Eine Gruppe von Manifestdateien, die einen einzelnen Snapshot bilden, ist eine Manifestliste.
Diese Schicht bewahrt die Struktur und Integrität der Tabelle und ermöglicht eine effiziente Datenabfrage und -verwaltung.
Datenebene
Die Datenschicht ist die Speicherkomponente der Iceberg-Architektur, in der sich die eigentlichen Daten befinden.
Iceberg unterstützt verschiedene Datenformate, darunter Parquet, ORC und Avro. Diese Flexibilität ermöglicht eine optimierte Speicherung und effiziente Datenverarbeitung für unterschiedliche Datentypen und Anwendungsfälle.
Apache Iceberg Integration und Kompatibilität
Apache Iceberg lässt sich mit vielen gängigen Big-Data-Verarbeitungsframeworks und Computing-Engines integrieren.
Integrationen mit Datenverarbeitungssystemen
Apache Spark
Iceberg-Tabellen funktionieren wie große Datenspeichersysteme, auf denen du mit Spark APIs Daten lesen und schreiben kannst. Neben der DataFrame-API kannst du auch das Spark SQL-Modul verwenden, um Iceberg-Tabellen abzufragen.
Apache Spark hat zwei Kataloge: org.apache.iceberg.spark.SparkCatalog
und org.apache.iceberg.spark.SparkSessionCatalog
. Diese Kataloge helfen Spark, die verfügbaren Metadaten der Iceberg Tabellen zu finden und darauf zuzugreifen.
metadataorg.apache.iceberg.spark.SparkCatalog
: Um externe Katalogdienste wie Hive oder Hadoop zu nutzen.org.apache.iceberg.spark.SparkSessionCatalog
: Der in Spark integrierte Katalog kann sowohl Iceberg- als auch Nicht-Iceberg-Tabellen in derselben Sitzung verarbeiten.
Apache Flink
Die Integration von Apache Flink und Iceberg ist für die Verarbeitung von Streaming-Daten bekannt. Diese Integration ermöglicht es dir, Daten direkt aus verschiedenen Quellen in Iceberg Tabellen zu streamen und erleichtert die Analyse von Echtzeit-Streaming-Daten.
Presto und Trino
Preso und Trino sind für ihre schnellen Datenverarbeitungsfähigkeiten im Vergleich zu Hive oder anderen SQL-Engines bekannt. Wenn du also umfangreiche Daten hast, die abgefragt und analysiert werden müssen, ist die Integration von Iceberg und Presto/Trino eine gute Wahl.
Trino hat keinen eingebauten Katalog. Sie ist auf externe Katalogdienste wie Hive Metastore oder AWS Glue angewiesen, um auf Iceberg Tabellen zu verweisen.
Kompatibilität mit dem Data Lake
Herkömmliche Data Lakes unterstützen keine ACID-Eigenschaften, was dazu führt, dass Daten unvollständig gelesen oder gleichzeitig geschrieben werden. Die Integration eines Data Lakes mit einem Iceberg gewährleistet jedoch die Konsistenz und Genauigkeit der Daten.
- Amazon S3: Amazon S3 ist ein beliebter Cloud-Speicherdienst, der verschiedene Dateiformate unterstützt. Es wird als Speicherschicht in der Data-Lake-Architektur verwendet. Um Iceberg mit S3 zu nutzen, musst du AWS Glue als Katalogdienst verwenden. Sobald der Katalog konfiguriert ist, kannst du jede Abfragesprache verwenden, um Tabellen zu analysieren.
- Google Cloud Storage: Ein Data Lake in der Google Cloud bietet eine skalierbare und flexible Datenarchitektur. Viele Unternehmen, deren Dateninfrastruktur auf Google Cloud basiert, können das Format der Iceberg-Tabellen nutzen. Iceberg-Tabellen können mit Googles BigQuery oder den üblichen Abfragesprachen abgefragt werden.
- Azure Blob Storage: Das ist Microsofts Speichersystem, das für die Speicherung großer Mengen unstrukturierter Daten in der Cloud optimiert ist. Iceberg ist mit Azure integriert und bietet schnellen und zuverlässigen Datenzugriff.
Apache Iceberg gegen Delta Lake
Apache Iceberg und Delta Lake sind beides fortschrittliche Tabellenformate, die entwickelt wurden, um ACID-Eigenschaften in Data Lakes einzubringen, aber sie unterscheiden sich in ihren Funktionen, Integrationen und Anwendungsfällen.
Hier ist ein detaillierter Vergleich zwischen den beiden:
Überblick über den Deltasee
Delta Lake ist ein Tabellenformat, das eine Sammlung von Parquet-Dateien mit ACID-Eigenschaften versieht und damit sicherstellt, dass die Leser keine inkonsistenten Daten sehen.
Delta Lake wurde von Databricks, dem Unternehmen hinter Apache Spark, entwickelt und ist mit Spark für Big Data-Verarbeitung und -Analysen bestens kompatibel.
Delta Lake verwendet Transaktionsprotokolle, um Zeitreisefunktionen zu verwalten. Ein Transaktionsprotokoll ist eine Liste von JSON-Dateien, die Änderungen an der Tabelle nachverfolgen. Jedes Einfügen, Löschen oder Aktualisieren führt zu einer neuen Protokolldatei, in der die jeweiligen Änderungen festgehalten werden.
Delta Lake erstellt in regelmäßigen Abständen Checkpoint-Dateien, die Schnappschüsse der gesamten Tabelle zu bestimmten Zeitpunkten darstellen und im Parquet-Format gespeichert werden.
Apache Iceberg vs. Delta Lake Eigenschaften im Vergleich
Feature |
Apache Iceberg |
Deltasee |
Definition |
Das Iceberg-Tabellenformat bietet eine skalierbare Infrastruktur mit Unterstützung für mehrere Verarbeitungsmaschinen. |
Delta Lake ist eine zuverlässige Speicherschicht, die sich besonders für das Databricks-Ökosystem eignet. |
Dateiformat |
Iceberg unterstützt verschiedene Dateiformate, darunter Parquet, Avro und ORC. |
Delta Lake unterstützt von Haus aus nur das Parquet-Dateiformat. |
ACID-Eigenschaften unterstützen |
Iceberg unterstützt ACID-Transaktionen. |
Delta Lake bietet robuste ACID-Eigenschaften. |
Handhabung von Trennwänden |
Iceberg unterstützt dynamische Partitionierung, d.h. Partitionen können aktualisiert werden, ohne das Schema neu zu schreiben. |
Partitionen sind konstant und du solltest sie bei der Erstellung von Tabellen definieren. Das Ändern von definierten Partitionen kann das Neuschreiben von Daten beinhalten. |
Zeitreise |
Jede Änderung an der Tabelle erzeugt einen neuen Snapshot. |
Es bietet Zeitreisefunktionen durch Transaktionsprotokolle, wobei Änderungen in JSON-Dateien nachverfolgt werden. |
Integrationen |
Iceberg unterstützt mehrere Datenverarbeitungs-Engines, wie SQL, Spark, Trino, Hive, Flink, Presto und mehr. |
Delta Lake ist eng mit Apache Spark gekoppelt. |
Apache Iceberg vs. Delta Lake Anwendungsfälle
Anwendungsfall |
Apache Iceberg |
Deltasee |
Flexibilität des Motors |
Am besten ist es, wenn du mehrere Engines verwendest, z. B. Apache Spark, Flink, Presto, Hive usw. Sie ist ideal für Umgebungen, in denen verschiedene Engines für unterschiedliche Verarbeitungsaufgaben benötigt werden. |
Die beste Lösung für Nutzer, die Apache Spark verwenden, denn sie bietet eine enge Integration und optimale Leistung innerhalb des Spark-Ökosystems. |
Daten-Streaming |
Unterstützt die kontinuierliche Aufnahme von Daten aus verschiedenen Quellen und verarbeitet sie in Echtzeit. |
Sie vereint Batch- und Stream-Verarbeitung, was ideal für Anwendungsfälle ist, die beides in einer einzigen Pipeline benötigen. |
Apache Iceberg vs. Zusätzliche Überlegungen zum Deltasee
- Gemeinschaft und Ökosystem: Sowohl Iceberg als auch Delta Lake haben aktive Gemeinden und eine umfangreiche Dokumentation. Delta Lake profitiert jedoch von der Unterstützung durch Databricks und bietet robusten Support innerhalb des Databricks-Ökosystems.
- Leistung: Beide Formate bieten zwar Leistungsoptimierungen, aber die enge Integration von Delta Lake mit Spark kann Spark-zentrierte Workflows begünstigen. Die Flexibilität von Iceberg mit verschiedenen Motoren kann zu Leistungssteigerungen in Umgebungen mit mehreren Motoren führen.
Insgesamt eignet sich Delta Lake gut für Anwendungsfälle, die Echtzeitverarbeitung und eine enge Integration mit Spark und dem Databricks-Ökosystem erfordern. Auf der anderen Seite bietet Apache Iceberg mehr Flexibilität für die Verarbeitung großer Datenmengen und die Möglichkeit, die beste Engine für bestimmte Anwendungsfälle zu wählen.
Erste Schritte mit Apache Iceberg
Um Apache Iceberg einzurichten und zu nutzen, musst du deine Umgebung konfigurieren und die grundlegenden und erweiterten Funktionen verstehen. Dieser Leitfaden hilft dir, damit anzufangen.
Installation und Einrichtung
Um Iceberg Tabellen einzurichten und auszuführen, musst du die folgenden Umgebungen auf deinem Rechner konfiguriert haben:
- Java JDK
- PySpark
- Python
- Apache Spark
Außerdem ist es von Vorteil, wenn du ein grundlegendes Verständnis für diese Tools und Technologien hast. Du kannst sie in den folgenden Kursen lernen:
- Big Data mit PySpark
- Einführung in PySpark
- Einführung in Spark SQL in Python
- Grundlagen von Big Data mit PySpark
- Python Programmierung
Wenn du fertig bist, kannst du die folgenden Schritte befolgen, um die Tabellen in Iceberg einzurichten:
- Lade die Iceberg JAR-Dateien herunter und lege sie in einem Verzeichnis auf deinem Rechner ab.
- Erstelle einen neuen Ordner mit dem Namen
iceberg-warehouse
, in dem du die Tabellen von Iceberg speicherst.
mkdir iceberg-warehouse
- Konfiguriere die jar-Dateien in einer Spark-Sitzung, wie unten gezeigt.
from pyspark.sql import SparkSession
spark = SparkSession.builder \
.appName("Iceberg-sample") \
.config("spark.jars", "jars/iceberg-spark-runtime-<version>.jar") \
.getOrCreate()
Ersetze “jars/iceberg-spark-runtime-.jar”
durch das tatsächliche Verzeichnis der jar-Dateien und die Version, die du verwendest.
- Konfiguriere PySpark so, dass es Iceberg-Tabellen verwendet.
from pyspark.sql import SparkSession
spark = SparkSession.builder \
.appName("Iceberg-Sample") \
.config("spark.jars", "jars/iceberg-spark-runtime-<version>.jar") \
.config("spark.sql.catalog.catalog_name", "org.apache.iceberg.spark.SparkCatalog") \
.config("spark.sql.catalog.catalog_name.type", "hadoop") \
.config("spark.sql.catalog.catalog_name.warehouse", "file:///C:/HP/iceberg-warehouse") \
.getOrCreate()
Ersetze "jars/iceberg-spark-runtime-.jar"
durch den tatsächlichen Pfad und die Version der Iceberg JAR-Dateien und stelle sicher, dass der Lagerpfad korrekt ist.
Du kannst jetzt mit PySpark Iceberg-Tabellen erstellen und verwenden.
Grundlegende Operationen
- Erstelle eine Tabelle und füge Daten in sie ein.
spark.sql(""" CREATE TABLE my_catalog.emp_table ( id INT, data STRING ) USING iceberg """)
spark.sql(""" INSERT INTO catalog_name.emp_table VALUES (14, 'james'),('15','john')""")
- Befehl zum Löschen von Daten aus Iceberg-Tabellen.
spark.sql("DELETE FROM catalog_name.emp_table WHERE id = 14")
Erweiterte Operationen
Das Hinzufügen, Aktualisieren oder Löschen von Spalten ohne Auswirkungen auf bestehende Daten ist Teil der Schemaentwicklung.
- Hier siehst du, wie du eine neue Spalte hinzufügen kannst.
spark.sql("ALTER TABLE ADD catalog_name.emp_table COLUMN salary INT")
Partitionsentwicklung bedeutet, dass Partitionsspalten geändert werden, ohne dass bestehende Datendateien überschrieben werden.
- So kannst du eine neue Partitionsspalte hinzufügen.
spark.sql("ALTER TABLE catalog_name.emp_table ADD PARTITION FIELD emp_join_date")
Diese Schritte und Befehle bieten einen grundlegenden Rahmen für den Einstieg in Apache Iceberg und vermitteln dir einen Eindruck davon, wie die Arbeit mit diesem Format aussieht.
Fazit
Wir haben heute eine Menge behandelt; lass uns die wichtigsten Erkenntnisse zusammenfassen.
Apache Iceberg bietet eine robuste Tabellenstruktur für eine Reihe von Datendateien, die ACID-Transaktionen unterstützt und für Datenkonsistenz und Zuverlässigkeit sorgt.
Das Iceberg-Format bietet dynamische Schemaentwicklung, nahtlose Partitionierung und Skalierbarkeit für Speichersysteme. Die Integration mit Datenverarbeitungs-Engines wie Apache Spark und Flink ermöglicht eine effiziente Verarbeitung von Batch- und Echtzeit-Streaming-Daten.
Wenn du tiefer in die moderne Datenarchitektur und -verwaltung einsteigen willst, solltest du dir diese zusätzlichen Ressourcen ansehen:
FAQs
Kann Apache Iceberg mit komplexen verschachtelten Datenstrukturen umgehen?
Ja, Apache Iceberg kann komplexe verschachtelte Datenstrukturen verarbeiten. Sie unterstützt verschachtelte Datentypen wie Structs, Maps und Arrays und eignet sich damit für eine Vielzahl von Datenszenarien.
Wie stellt Apache Iceberg die Datenkonsistenz bei gleichzeitigen Schreibvorgängen sicher?
Apache Iceberg stellt die Datenkonsistenz bei gleichzeitigen Schreibvorgängen durch optimistische Gleichzeitigkeitskontrolle sicher. Es verfolgt Änderungen mit einer versionierten Metadatenschicht, und jeder Schreibvorgang erstellt einen neuen Snapshot. Bei gleichzeitigen Schreibvorgängen prüft Iceberg auf Konflikte und stellt sicher, dass nur ein Schreibvorgang erfolgreich ist und die Datenintegrität gewahrt bleibt.
Welche Auswirkungen hat der Einsatz von Apache Iceberg auf die Leistung im Vergleich zu traditionellen Data Lakes?
Apache Iceberg kann die Leistung im Vergleich zu traditionellen Data Lakes deutlich verbessern, indem es das Datenlayout optimiert, dynamische Partitionierung unterstützt und ein feinkörniges Metadatenmanagement ermöglicht. Diese Funktionen reduzieren die Datenmenge, die bei Abfragen gescannt wird, und verbessern die Abfrageleistung insgesamt.
Kann Apache Iceberg mit anderen Cloud-Speicherlösungen als Hadoop verwendet werden?
Ja, Apache Iceberg kann mit verschiedenen Cloud-Speicherlösungen verwendet werden, darunter Amazon S3, Google Cloud Storage und Azure Blob Storage. Es ist speicherunabhängig und ermöglicht es dir, die Fähigkeiten von Iceberg auf verschiedenen Plattformen zu nutzen.
Wie geht Apache Iceberg mit Schemaänderungen um, ohne dass es zu Ausfallzeiten kommt?
Apache Iceberg handhabt Schemaänderungen durch seine native Schema-Evolution-Funktion. So kannst du Spalten hinzufügen, entfernen oder aktualisieren, ohne dass Ausfallzeiten entstehen oder bestehende Daten neu geschrieben werden müssen. Diese Änderungen werden auf die Metadaten angewendet und neue Daten werden nach dem aktualisierten Schema geschrieben.
Gibt es eine Benutzeroberfläche für die Verwaltung und Abfrage von Iceberg-Tabellen?
Obwohl Apache Iceberg selbst keine eingebaute Benutzeroberfläche bietet, kann es in verschiedene Datenplattformen und Abfrage-Engines integriert werden, die Benutzeroberflächen anbieten. Tools wie Apache Spark, Trino und Presto können verwendet werden, um mit Iceberg-Tabellen über ihre jeweiligen Benutzeroberflächen zu interagieren.
Wie schneidet Apache Iceberg im Vergleich zu anderen Tabellenformaten wie Apache Hudi ab?
Apache Iceberg und Apache Hudi bieten beide ACID-Transaktionen und Zeitreisen an, aber sie haben unterschiedliche Designphilosophien und Anwendungsfälle. Iceberg konzentriert sich auf die Bereitstellung eines hochleistungsfähigen Tabellenformats mit Unterstützung für mehrere Engines, während Hudi den Schwerpunkt auf Echtzeit-Dateningestion und inkrementelle Verarbeitung legt. Die Wahl zwischen ihnen hängt von den spezifischen Anwendungsfällen und Integrationsanforderungen ab.
Kann Apache Iceberg für maschinelle Lernabläufe verwendet werden?
Ja, Apache Iceberg kann für Machine-Learning-Workflows verwendet werden. Dank seiner Fähigkeit, große Datensätze effizient zu verwalten, und der Unterstützung mehrerer Dateiformate (wie Parquet und Avro) eignet es sich für die Aufbereitung und Verarbeitung von Daten für maschinelle Lernmodelle. Die Integration mit Big Data-Frameworks wie Apache Spark erhöht den Nutzen in ML-Workflows noch weiter.
Wie handhabt Apache Iceberg die Datensicherheit und Zugriffskontrolle?
Apache Iceberg verlässt sich bei der Datensicherheit und der Zugriffskontrolle auf die zugrunde liegenden Speicher- und Verarbeitungsmodule. Du kannst Sicherheitsmaßnahmen wie Verschlüsselung, IAM-Richtlinien und Zugriffskontrollen auf der Speicherebene (z. B. Amazon S3, Google Cloud Storage) und der Verarbeitungsebene (z. B. Apache Spark, Flink) implementieren. Außerdem können Katalogdienste wie AWS Glue und Hive Metastore verwendet werden, um Berechtigungen und Zugriffskontrollen zu verwalten.
Srujana ist freiberufliche Tech-Autorin und hat einen vierjährigen Abschluss in Informatik. Das Schreiben über verschiedene Themen wie Data Science, Cloud Computing, Entwicklung, Programmierung, Sicherheit und viele andere ist für sie selbstverständlich. Sie liebt klassische Literatur und erkundet gerne neue Reiseziele.
Lerne mehr über Datentechnik und -management mit diesen Kursen!
Kurs
Big Data Fundamentals with PySpark
Kurs
Data Management Concepts
Der Blog
Die 32 besten AWS-Interview-Fragen und Antworten für 2024
Der Blog
Die 20 besten Snowflake-Interview-Fragen für alle Niveaus

Nisha Arya Ahmed
20 Min.

Der Blog
Lehrer/innen und Schüler/innen erhalten das Premium DataCamp kostenlos für ihre gesamte akademische Laufbahn
Der Blog
2022-2023 DataCamp Classrooms Jahresbericht
Der Blog
Q2 2023 DataCamp Donates Digest
Der Blog
Top 30 Generative KI Interview Fragen und Antworten für 2024

Hesam Sheikh Hassani
15 Min.