Delta-táblák olvasása Iceberg-ügyfelekkel az UniForm használatával
A Delta Universal Format (UniForm) lehetővé teszi Delta-táblák olvasását Iceberg-olvasó ügyfelekkel. Ehhez a funkcióhoz a Databricks Runtime 14.3 LTS vagy újabb verziója szükséges.
Fontos
Az örökölt UniForm IcebergCompatV1
táblafunkció dokumentációját az Örökölt UniForm IcebergCompatV1 című témakörben találja.
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.
Az UniForm a zstd-t használja a snappy helyett a mögöttes Parquet-adatfájlok tömörítési kodekjeként.
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:
- A Delta-táblát regisztrálni kell a Unity Catalogban. A felügyelt é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 = 2 és
minWriterVersion
>= 7 értéknek kell lennieminReaderVersion
>. Lásd : Hogyan kezeli az Azure Databricks a Delta Lake-funkciók 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
Nem engedélyezheti a törlési vektorokat egy olyan táblán, amelyen engedélyezve van az UniForm. Ha egy meglévő táblában engedélyezi az UniFormot, és engedélyezve vannak a törlési vektorok, az UniForm letiltja és törli a törlési vektorokat, és szükség szerint újraírja az adatfájlokat.
Delta UniForm engedélyezése
Fontos
A Delta UniForm engedélyezése beállítja a Delta tábla funkciót IcebergCompatV2
, amely egy írási protokoll funkció. Csak a táblafunkciót támogató ügyfelek írhatnak UniForm-kompatibilis táblákba. A Databricks Runtime 14.3 LTS-t vagy újabb verziót kell használnia a Delta-táblákba való íráshoz, 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.
A következő táblázattulajdonságokat kell megadnia az UniForm támogatásának engedélyezéséhez az Iceberg esetében:
'delta.enableIcebergCompatV2' = 'true'
'delta.universalFormat.enabledFormats' = 'iceberg'
Engedélyeznie kell az oszlopleképezést is az UniForm használatához. Ez automatikusan engedélyezve van, ha az UniFormot a tábla létrehozásakor engedélyezi, ahogyan az alábbi példában is látható:
CREATE TABLE T(c1 INT) TBLPROPERTIES(
'delta.enableIcebergCompatV2' = 'true',
'delta.universalFormat.enabledFormats' = 'iceberg');
Az UniForm egy meglévő táblán az alábbi szintaxissal engedélyezhető:
REORG TABLE table_name APPLY (UPGRADE UNIFORM(ICEBERG_COMPAT_VERSION=2));
Feljegyzés
Ez a szintaxis az UniForm nyilvános előzetes verziójáról való frissítésre is használható, amely a tábla funkciót IcebergCompatV1
használta.
Ez a szintaxis automatikusan letiltja és törli a törlési vektorokat a táblából. A meglévő fájlok szükség szerint újra vannak írva, hogy kompatibilisek legyenek az Iceberg-fájlokkal.
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.
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 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.
- Táblázat lekérése a REST API használatával.
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
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 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/iceberg
haszná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
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.
- A Delta Sharing címzettjei akkor is csak Deltaként olvashatják a táblát, ha engedélyezve van az UniForm.
A változásadatcsatorna akkor működik a Delta-ügyfeleknél, ha az UniForm engedélyezve van, de nem támogatja az Iceberget.
Az UniForm egyes Delta Lake-táblafunkcióit egyes Delta Sharing-olvasó ügyfelek nem támogatják. Lásd: Adatok és AI-eszközök biztonságos megosztása a Delta Sharing használatával.
Visszajelzés
https://aka.ms/ContentUserFeedback.
Hamarosan elérhető: 2024-ben fokozatosan kivezetjük a GitHub-problémákat a tartalom visszajelzési mechanizmusaként, és lecseréljük egy új visszajelzési rendszerre. További információ:Visszajelzés küldése és megtekintése a következőhöz: