Delta-táblák olvasása Iceberg-ügyfelekkel
Ez a cikk az Azure Databricks Delta Lake-ben tárolt tábláiban történő Iceberg-olvasás engedélyezésének részleteit ismerteti. Ehhez a funkcióhoz a Databricks Runtime 14.3 LTS vagy újabb verziója szükséges.
Feljegyzés
Ezt a funkciót korábban Delta Lake Universal Format (UniForm) néven ismerték.
Külső kapcsolatot úgy konfigurálhat, hogy a Unity Catalog Iceberg-katalógusként működjön. Lásd Databricks-táblák olvasása Iceberg-kliensekkel.
Hogyan működnek az Iceberg olvasások (UniForm)?
A Delta Lake és az Iceberg is Parquet-adatfájlokból és metaadatrétegekből áll. Az Iceberg-olvasások engedélyezése úgy konfigurálja a táblákat, hogy automatikusan, az adatok újraírása nélkül generálják az Iceberg metaadatait, hogy az Iceberg-ügyfelek az Azure Databricks által írt Delta-táblákat olvashassák. Az adatfájlok egyetlen példánya több formátumot is kiszolgál.
Fontos
- Az Iceberg-olvasásokat tartalmazó táblák a Snappy helyett a Zstandardot használják a mögöttes Parquet-adatfájlok tömörítési kodekjeként.
- Iceberg metaadatok létrehozása aszinkron futáson keresztül történik azon a számításon, amellyel adatokat írnak a Delta-táblákba, ami növelheti a meghajtó erőforrás használatát.
- Az örökölt UniForm
IcebergCompatV1
táblafunkció dokumentációját az Örökölt UniForm IcebergCompatV1című témakörben találja.
Követelmények
Az Iceberg-olvasások engedélyezéséhez a következő követelményeknek kell teljesülniük:
- A Delta-táblát regisztrálni kell a Unity Catalogban. A kezelt és a külső táblák is támogatottak.
- A táblának engedélyezve kell lennie az oszlopleképezésnek. Lásd: Oszlopok átnevezése és elvetése Delta Lake-oszlopleképezéssel.
- A Delta táblának
minReaderVersion
>= 2 ésminWriterVersion
>= 7 kell lennie. Lásd: Hogyan kezeli az Azure Databricks a Delta Lake funkció kompatibilitását?. - A táblába való íráshoz a Databricks Runtime 14.3 LTS-t vagy újabb verziót kell használnia.
Feljegyzés
A törlési vektorok nem engedélyezhetők olyan táblákon, amelyeken engedélyezve van az Iceberg olvasása.
A REORG
használatával letilthatja és kiüríti a törlési vektorokat, miközben engedélyezi az Iceberg-olvasásokat egy meglévő táblában, amelyen engedélyezve van a törlési vektorok használata. Lásd Az Iceberg olvasási támogatásának engedélyezése vagy frissítése a REORGhasználatával.
Engedélyezze az Iceberg olvasást (UniForm)
Fontos
Az Iceberg-olvasások engedélyezésekor a rendszer hozzáadja az írási protokoll IcebergCompatV2
funkciót a táblához. Csak a táblázatfunkciót támogató ügyfelek írhatnak olyan táblákba, amelyeken engedélyezve van az Iceberg olvasása. Az Azure Databricksben a Databricks Runtime 14.3 LTS vagy újabb verzióját kell használnia az engedélyezett táblák írásához.
Az Iceberg-olvasások kikapcsolhatók a delta.universalFormat.enabledFormats
táblatulajdonság törlésével. A Delta Lake-olvasó- és íróprotokoll-verziók frissítései nem vonhatók vissza.
Az Iceberg-olvasások engedélyezéséhez a következő táblázattulajdonságokat kell megadnia:
'delta.enableIcebergCompatV2' = 'true'
'delta.universalFormat.enabledFormats' = 'iceberg'
Amikor először engedélyezi az Iceberg-olvasásokat, 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.
A korlátozások listáját a Korlátozásokcímű témakörben találja.
A tábla létrehozásakor engedélyezze az Iceberg olvasásokat
Az oszlop leképezést engedélyezni kell az Iceberg-olvasások használatához. Ez automatikusan megtörténik, ha engedélyezi az Iceberg-olvasásokat a táblázat létrehozása során, ahogyan az alábbi példában is látható:
CREATE TABLE T(c1 INT) TBLPROPERTIES(
'delta.columnMapping.mode' = 'name',
'delta.enableIcebergCompatV2' = 'true',
'delta.universalFormat.enabledFormats' = 'iceberg');
Iceberg-olvasás engedélyezése meglévő táblán
A Databricks Runtime 15.4 LTS-ben és újabb verziókban engedélyezheti vagy frissítheti az Iceberg-olvasásokat egy meglévő táblán az alábbi szintaxissal:
ALTER TABLE table_name SET TBLPROPERTIES(
'delta.columnMapping.mode' = 'name',
'delta.enableIcebergCompatV2' = 'true',
'delta.universalFormat.enabledFormats' = 'iceberg');
Iceberg olvasási támogatásának engedélyezése vagy frissítése REORG
A REORG
használatával engedélyezheti az Iceberg olvasását és a mögöttes adatfájlok újraírását, ahogyan az alábbi példában is látható:
REORG TABLE table_name APPLY (UPGRADE UNIFORM(ICEBERG_COMPAT_VERSION=2));
Ha az alábbiak bármelyike igaz, használja a REORG
:
- A táblában engedélyezve vannak a törlési vektorok.
- Korábban engedélyezte az
IcebergCompatV1
UniForm Iceberg verzióját. - Olyan Iceberg-motorokat kell olvasnia, amelyek nem támogatják a Hive-stílusú Parquet-fájlokat, például az Athena vagy a Redshift fájlokat.
Mikor jön létre az Iceberg metaadatainak létrehozása?
Az Azure Databricks a delta lake-i írási tranzakció befejezése után aszinkron módon aktiválja a metaadatok létrehozását. Ez a metaadat-létrehozási folyamat ugyanazt a számítást használja, mint a Delta-tranzakciót.
Feljegyzés
Manuálisan is aktiválhatja az Iceberg-metaadatok létrehozását. Lásd: Iceberg-metaadatok manuális aktiválása.
A 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 csoportosíthatnak egyetlen véglegesítésbe az Iceberg metaadataiba.
A Delta Lake biztosítja, hogy egy adott számítási erőforráson csak egy metaadat-létrehozási folyamat legyen folyamatban. A második egyidejű 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 a Delta és Iceberg táblázatverzióit ,.
Delta és Iceberg táblaverziók
A Delta Lake és az Iceberg 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.
A Delta táblaverziói általában nem igazodnak az Iceberg-verziókhoz a véglegesítési időbélyeg vagy a verzióazonosító alapján. Annak ellenőrzéséhez, hogy egy Delta-tábla melyik verziója felel meg egy Iceberg-tábla adott verziójának, használhatja a megfelelő táblatulajdonságokat. Lásd: Iceberg metaadatok létrehozásának állapotának ellenőrzése.
Iceberg metaadatok létrehozásának állapotának ellenőrzése
Az Iceberg táblákon való olvasásának engedélyezése 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 az alábbiak egyikével tekintheti át ezeket a metaadatmezőket:
-
Delta Uniform Iceberg
A visszaadottDESCRIBE EXTENDED table_name
szakasz áttekintése. - A táblázat metaadatainak áttekintése a Catalog Explorerrel.
- A REST API használata táblázatleké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 metaadat-generációt nem támogató ügyfél a Delta táblába ír.
Az Iceberg-metaadatok létrehozásának manuális aktiválásához használja az alábbi szintaxist:
MSCK REPAIR TABLE <table-name> SYNC METADATA
Lásd: REPAIR TABLE.
Iceberg olvasása egy metaadat JSON-útvonal segítségével
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 Azure Databricks 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 az alábbi mintával tárolja az Iceberg-metaadatokat a táblakönyvtár alatt:
<table-path>/metadata/<version-number>-<uuid>.metadata.json
Az Azure Databricksben az alábbi műveletek egyikével tekintheti át ezt a metaadat-helyet:
-
Delta Uniform Iceberg
A visszaadottDESCRIBE EXTENDED table_name
szakasz áttekintése. - A táblázat metaadatainak áttekintése a Catalog Explorerrel.
- Használja a következő parancsot a REST API-val:
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 útvonal alapú Iceberg-olvasó ügyfelek esetében szükség lehet a metaadatok JSON útvonalainak manuális frissítésére és aktualizálására az aktuális táblaverziók olvasásához. A felhasználók hibákat tapasztalhatnak az Iceberg-táblák elavult verziók használatával történő lekérdezésekor, mivel a Parquet-adatfájlok törlődnek a Delta-táblából VACUUM
.
Korlátozások
A következő korlátozások vonatkoznak az összes olyan táblára, amelyen engedélyezve van az Iceberg olvasása:
- A jéghegy-lekérdezések nem működnek olyan táblákon, amelyeknél engedélyezve vannak a törlési vektorok. Lásd: Mik azok a törlési vektorok?.
- Az Iceberg olvasási funkcióval rendelkező deltatáblák nem támogatják
VOID
típusokat. - Az Iceberg-ügyféltámogatás csak olvasható. Az írások nem támogatottak.
- A Iceberg-olvasó ügyfelek egyéni korlátozásokkal rendelkezhetnek, függetlenül attól, hogy az Azure Databricks támogatja-e a Iceberg-olvasásokat. Tekintse meg a kiválasztott ügyfél dokumentációját.
- A Delta Sharing címzettjei csak Deltaként olvashatják a táblát, még akkor is, ha az Iceberg olvasási funkció engedélyezve van.
- Az Iceberg által használt Delta Lake tábla funkciókat egyes Delta Sharing olvasó kliensek nem támogatják. Lásd : Mi az a deltamegosztás?.
Az Adatváltozás-követés akkor működik a Delta-ügyfeleknél, ha az Iceberg olvasási funkció engedélyezve van. Azonban maga az Iceberg ezt nem támogatja.