Unterschiede zwischen Iceberg- und Hive Datalake-Tabellen

Es gibt mehrere Unterschiede zwischen Iceberg- und Hive Datalake-Tabellen. Im Gegensatz zu Hive Datalake-Tabellen verwalten Iceberg-Tabellen beispielsweise ihre Daten vollständig, selbst wenn diese auf externen Speichern abgelegt sind.

Die folgende Liste enthält einige der wichtigsten Unterschiede:

  • Im Gegensatz zu Iceberg-Tabellen sind Datalake-Tabellen nicht für die Hive Verarbeitung gleichzeitiger Operationen ausgelegt. Dies bedeutet, dass bei gleichzeitigen DDL-, INSERTS- und SELECT-Operationen Probleme auftreten können.
  • Es ist nicht möglich, einer Iceberg-Tabelle weitere Daten hinzuzufügen, indem man eine Datei in ihrem Datenverzeichnis hinzufügt. Die Liste der Dateien, aus denen der Inhalt der Tabelle besteht, wird durch separate Metadaten verfolgt und ignoriert. Ebenso ist es nicht möglich, Daten durch manuelles Entfernen von Dateien aus dem Verzeichnis der Tabellendaten zu löschen. Daten können mithilfe von Iceberg-APIs sowohl zu dem Datenverzeichnis als Db2 auch zu anderen Iceberg-Daten-Engines wie Spark hinzugefügt werden. Im Gegensatz zu Hive Datalake-Tabellen sind diese Daten bei Abfragen sofort sichtbar.
  • Es ist nicht möglich, eine vorhandene Iceberg-Tabelle in zu Db2 katalogisieren, indem Sie eine CREATE DATALAKE TABLE -Anweisung ausführen und den Speicherort der Iceberg-Tabelle mit der LOCATION-Klausel der Tabelle angeben. Verwenden Sie die Prozedur EXT_METASTORE_SYNC, um die Tabelle in zu Db2 importieren.
  • Die Verzeichnisstruktur für Iceberg-Tabellen unterscheidet sich von der Hive für Datalake-Tabellen. Iceberg-Tabellen enthalten Unterpfade für die Metadaten und Datendateien, die zu der Tabelle gehören. Wenn Sie zum Beispiel eine Tabelle mit dem Namen T1 erstellen, sind die Unterpfade für diese Tabelle T1/metadata und T1/data. T1/metadata wird verwendet, um die Metadaten, das Manifest und die Dateien zu speichern. T1/data wird zum Speichern der Datendateien verwendet.
  • Die einzigen unterstützten Dateiformate für Iceberg Datalake-Tabellen sind Parquet, ORC und AVRO.
  • CREATE DATALAKE TABLE mit der LIKE-Klausel wird für Iceberg-Tabellen nicht unterstützt.
  • Die Partitionierung nach Ausdruck ist auf Iceberg-Transformationsfunktionen beschränkt, mit Ausnahme von bucket[N] und void, die nicht unterstützt werden.