Megosztás a következőn keresztül:


Örökölt UniForm IcebergCompatV1

Fontos

Ez a dokumentáció ki lett állítva, és lehet, hogy nem frissül. A tartalomban említett termékek, szolgáltatások vagy technológiák már nem támogatottak. Lásd: Delta-táblák olvasása Az UniForm használata Iceberg-ügyfelekkel.

Fontos

Ez a funkció nyilvános előzetes verzióban érhető el a Databricks Runtime 13.2-s és újabb verziójában.

A Delta Universal Format (UniForm) lehetővé teszi Delta-táblák olvasását Iceberg-olvasó ügyfelekkel.

Az UniForm kihasználja azt a tényt, hogy a Delta Lake és az Iceberg is Parquet-adatfájlokból és metaadatrétegekből áll. Az UniForm automatikusan létrehozza az Iceberg metaadatait aszinkron módon, adatok újraírása nélkül, hogy az Iceberg-ügyfelek úgy olvashassák a Delta-táblákat, mintha Iceberg-táblák lennének. Az adatfájlok egyetlen példánya mindkét formátumot szolgálja.

Külső kapcsolatot úgy konfigurálhat, hogy a Unity Catalog Iceberg-katalógusként működjön. Lásd: Olvasás a Unity Catalog Iceberg-katalógus végpontjának használatával.

Feljegyzés

Az UniForm-metaadatok létrehozása aszinkron módon fut azon a számításon, amellyel adatokat írhat a Delta-táblákba, ami növelheti az illesztőprogram erőforrás-használatát.

Követelmények

Az UniForm engedélyezéséhez teljesítenie kell a következő követelményeket:

Delta UniForm engedélyezése

Fontos

A Delta UniForm engedélyezése beállítja a Delta tábla funkciót IcebergCompatV1, amely egy írási protokoll funkció. Csak a táblafunkciót támogató ügyfelek írhatnak UniForm-kompatibilis táblákba. A Databricks Runtime 13.2 vagy újabb verziójával kell írnia a Delta-táblákba, ha engedélyezve van ez a funkció.

Az UniForm kikapcsolható a delta.universalFormat.enabledFormats táblatulajdonság alaphelyzetbe állításával. Az oszlopleképezést az engedélyezés után nem kapcsolhatja ki, és a Delta Lake olvasó- és íróprotokoll-verzióira való frissítés nem vonható vissza.

Az alábbi táblázattulajdonság lehetővé teszi az UniForm támogatását az Iceberghez. iceberg az egyetlen érvényes érték.

'delta.universalFormat.enabledFormats' = 'iceberg'

Engedélyeznie kell az oszlopleképezést és IcebergCompatV1 az UniForm használatát is. Ezek automatikusan be vannak állítva, ha engedélyezi az UniFormot a tábla létrehozása során, ahogyan az alábbi példában is látható:

CREATE TABLE T(c1 INT) TBLPROPERTIES(
  'delta.universalFormat.enabledFormats' = 'iceberg');

Ha CTAS-utasítással hoz létre új táblát, manuálisan kell megadnia az oszlopleképezést, ahogyan az alábbi példában is látható:

CREATE TABLE T
TBLPROPERTIES(
  'delta.columnMapping.mode' = 'name',
  'delta.universalFormat.enabledFormats' = 'iceberg')
AS
  SELECT * FROM source_table;

Ha módosít egy meglévő táblát, az alábbi példához hasonlóan meg kell adnia az összes tulajdonságot:

ALTER TABLE T SET TBLPROPERTIES(
  'delta.columnMapping.mode' = 'name',
  'delta.enableIcebergCompatV1' = 'true',
  'delta.universalFormat.enabledFormats' = 'iceberg');

Az UniForm első engedélyezésekor megkezdődik az aszinkron metaadatok létrehozása. Ezt a feladatot el kell végezni, mielőtt a külső ügyfelek le tudják kérdezni a táblát az Iceberg használatával. Lásd: Iceberg metaadatok létrehozásának állapotának ellenőrzése.

Feljegyzés

Ha a BigQueryt szeretné használni Iceberg-olvasóügyfélként, akkor az Azure Databricksre kell állítania spark.databricks.delta.write.dataFilesToSubdir true , hogy megfeleljen az adatelrendezés BigQuery-követelményének.

Lásd: Korlátozások.

Mikor hoz létre Iceberg-metaadatokat az UniForm?

Az Azure Databricks aszinkron módon aktiválja az Iceberg-metaadatok létrehozását, miután egy Delta Lake-írási tranzakció befejeződik ugyanazzal a számítással, amely a Delta-tranzakciót végrehajtotta. Manuálisan is aktiválhatja az Iceberg-metaadatok létrehozását. Lásd: Iceberg-metaadatok manuális aktiválása.

Az Iceberg-metaadatok generálásával kapcsolatos írási késések elkerülése érdekében a gyakori véglegesítéseket tartalmazó Delta-táblák több Delta-véglegesítést köthetnek össze egyetlen Iceberg-véglegesítésbe.

A Delta Lake biztosítja, hogy egyszerre csak egy Iceberg-metaadat-létrehozási folyamat legyen folyamatban. A második egyidejű Iceberg-metaadat-létrehozási folyamatot aktiváló véglegesítések sikeresen véglegesítik a Delta-t, de nem aktiválják az aszinkron Iceberg-metaadatok létrehozását. Ez megakadályozza a metaadatok létrehozásának kaszkádolt késését a gyakori véglegesítésekkel rendelkező számítási feladatok esetében (a véglegesítések között másodpercről percre).

Lásd: Delta és Iceberg táblaverziók.

Iceberg metaadatok létrehozásának állapotának ellenőrzése

Az UniForm a következő mezőket adja hozzá a Unity Cataloghoz és az Iceberg tábla metaadataihoz a metaadatok létrehozásának állapotának nyomon követéséhez:

Metaadatok mező Leírás
converted_delta_version A Delta-tábla legújabb verziója, amelyhez sikeresen létrehozták az Iceberg metaadatait.
converted_delta_timestamp Annak a legújabb Delta-véglegesítésnek az időbélyege, amelyhez sikeresen létrehozták az Iceberg metaadatait.

Az Azure Databricksben ezeket a metaadatmezőket a Catalog Explorer használatával tekintheti át. Ezeket a mezőket és értékeket a rendszer akkor is visszaadja, ha a REST API-t használja egy tábla lekéréséhez.

Az Iceberg-olvasó ügyfél dokumentációjában megtudhatja, hogyan tekintheti át a táblatulajdonságokat az Azure Databricksen kívül. Az OSS Apache Spark esetében az alábbi szintaxissal tekintheti meg ezeket a tulajdonságokat:

SHOW TBLPROPERTIES <table-name>;

Iceberg-metaadatok konvertálásának manuális aktiválása

Manuálisan aktiválhatja az Iceberg-metaadatok létrehozását a Delta-tábla legújabb verziójához. Ez a művelet szinkron módon fut, ami azt jelenti, hogy ha befejeződik, az Icebergben elérhető tábla tartalma a Delta-tábla legújabb verzióját tükrözi, amely a konvertálási folyamat elindításakor érhető el.

Ez a művelet normál körülmények között nem szükséges, de segíthet, ha az alábbiakat tapasztalja:

  • A fürt leáll, mielőtt az automatikus metaadat-létrehozás sikeres lesz.
  • Egy hiba vagy feladathiba megszakítja a metaadatok létrehozását.
  • Az UniForm Iceberg metaadatait nem támogató ügyfél a Delta táblába ír.

Használja az alábbi szintaxist az Iceberg-metaadatok létrehozásának manuális aktiválásához:

MSCK REPAIR TABLE <table-name> SYNC METADATA

Lásd: REPAIR TABLE.

Olvasás metaadatok JSON-elérési útján

Egyes Iceberg-ügyfeleknek meg kell adniuk a verziószámozott metaadatfájlok elérési útját a külső Iceberg-táblák regisztrálásához. Minden alkalommal, amikor az UniForm a Delta-tábla új verzióját Icebergre konvertálja, létrehoz egy új metaadat-JSON-fájlt.

Az Iceberg konfigurálásához metaadat JSON-elérési utakat használó ügyfelek közé tartozik a BigQuery. A konfiguráció részleteiért tekintse meg az Iceberg-olvasó ügyfél dokumentációját.

A Delta Lake a táblakönyvtár alatt tárolja az Iceberg-metaadatokat az alábbi mintával:

<table-path>/metadata/<version-number>-<uuid>.metadata.json

A fájl elérési útját a Catalog Explorerrel találja meg. Az UniForm-kompatibilis táblák esetében a Delta tábla adatai tartalmazzák az Iceberg metaadat-helyének mezőjét.

A REST API-val is lekérheti a táblák összes részletét, beleértve a metaadatok helyét is. Használja az alábbi parancsot:

GET api/2.1/unity-catalog/tables/<catalog-name>.<schame-name>.<table-name>

A válasz a következő információkat tartalmazza:

{
    ...
          "delta_uniform_iceberg": {
              "metadata_location":  "<cloud-storage-uri>/metadata/v<version-number>-<uuid>.metadata.json"
    }
}

Fontos

Az elérési útalapú Iceberg-olvasó ügyfelekhez szükség lehet a metaadatok JSON-elérési útjának manuális frissítésére és frissítésére az aktuális táblaverziók olvasásához. A felhasználók hibákat tapasztalhatnak, amikor elavult verziókkal kérdezik le az Iceberg-táblákat, mivel a Parquet-adatfájlok törlődnek a Delta-táblából a következővel VACUUM: .

Olvasás a Unity Catalog Iceberg-katalógus végpontja használatával

Egyes Iceberg-ügyfelek csatlakozhatnak egy Iceberg REST-katalógushoz. A Unity Catalog az Iceberg REST catalog API írásvédett implementációját biztosítja Delta-táblákhoz, és az UniForm engedélyezve van a végpont /api/2.1/unity-catalog/iceberghasználatával. A REST API használatával kapcsolatos részletekért tekintse meg az Iceberg REST API specifikációit .

Az Iceberg-katalógus API-t támogató ügyfelek közé tartozik az Apache Spark, a Flink és a Trino. Konfigurálnia kell a Delta táblát tartalmazó mögöttes felhőobjektum-tárolóhoz való hozzáférést, ha engedélyezve van az UniForm. A konfiguráció részleteiért tekintse meg az Iceberg-olvasó ügyfél dokumentációját.

Létre kell hoznia és konfigurálnia kell egy Azure Databricks személyes hozzáférési jogkivonatot, hogy más szolgáltatások kapcsolódhassanak a Unity Cataloghoz. Tekintse meg az Azure Databricks automatizálásának hitelesítését – áttekintés.

Az alábbi példa az OSS Apache Spark konfigurálására szolgáló beállításokat szemlélteti az UniForm icebergként való olvasásához:

"spark.sql.extensions": "org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions",
"spark.sql.catalog.unity"="org.apache.iceberg.spark.SparkCatalog",
"spark.sql.catalog.unity.catalog-impl": "org.apache.iceberg.rest.RESTCatalog",
"spark.sql.catalog.unity.uri": "<api-root>/api/2.1/unity-catalog/iceberg",
"spark.sql.catalog.unity.token":"<your_personal_access_token>",
"spark.sql.catalog.unity.io-impl": "org.apache.iceberg.aws.s3.S3FileIO

Cserélje le annak a munkaterületnek a teljes URL-címét, amelyben a személyes hozzáférési jogkivonatot <api-root>létrehozta.

Feljegyzés

Ha táblákat kérdez le a Unity Catalogban ezzel a módszerrel, az objektumazonosítók a következő mintát használják:

unity.<catalog-name>.<schema-name>.<table-name>

Ez a minta ugyanazt a háromrétegű névkészletet használja, amely a Unity Katalógusban található, de hozzáad egy további előtagot unity.

Delta- és Iceberg-táblaverziók

A Delta Lake és az Iceberg egyaránt lehetővé teszi az időutazási lekérdezéseket a tábla metaadataiban tárolt táblázatverziók vagy időbélyegek használatával.

Az Iceberg és a Delta táblaverziói általában nem igazodnak sem a véglegesítési időbélyeghez, sem a verzióazonosítóhoz. Ha ellenőrizni szeretné, hogy egy Delta-tábla melyik verziójának felel meg egy Iceberg-tábla adott verziója, használhatja az Iceberg táblában beállított megfelelő táblatulajdonságokat. Lásd: Iceberg metaadatok létrehozásának állapotának ellenőrzése.

Korlátozások

Az alábbi korlátozások érvényesek:

  • Az UniForm nem működik olyan táblákon, amelyeken engedélyezve van a törlési vektor. Lásd: Mik azok a törlési vektorok?.
  • Az UniForm-kompatibilis deltatáblák nem támogatják LISTa típusokat MAPés VOID a típusokat.
  • A Iceberg-ügyfelek csak az UniFormból olvashatnak. Az írások nem támogatottak.
  • A Iceberg-olvasó ügyfelek egyedi korlátozásokkal rendelkezhetnek, függetlenül az UniFormtól. Tekintse meg a kiválasztott ügyfél dokumentációját.
  • Az Iceberg-olvasó 1.2.0-s és újabb verziói nem támogatják INT96 az Apache Spark által írt időbélyeg-típust. A korlátozás elkerülése érdekében használja az alábbi kódot az UniForm-táblákba író jegyzetfüzetekben: spark.conf.set(“spark.sql.parquet.outputTimestampType”, “TIMESTAMP_MICROS”)
  • A Unity Catalog Iceberg végpontjának nyilvános előzetes verziója nem nagy méretű éles számítási feladatokhoz készült. Sebességkorlátozást tapasztalhat, ha másodpercenként 5 lekérdezési küszöbértéket lép túl.

Az alábbi Delta Lake-funkciók akkor működnek a Delta-ügyfeleknél, ha az UniForm engedélyezve van, de nem támogatják az Iceberget:

  • Adatcsatorna módosítása
  • Delta-megosztás