Používanie ľadovec tabuľky s OneLake
V službe Microsoft OneLake môžete vytvoriť odkazy k tabuľkám ľadovca Apache, aby ste ich mohli používať v širokej škále vyťažení služby Fabric. Táto funkcia je k dispozícii prostredníctvom funkcie nazývanej virtualizácia metaúdajov, ktorá umožňuje interpretovať tabuľky Iceberg ako Delta Lake z perspektívy skratky. Keď vytvoríte odkaz na priečinok tabuľky Iceberg, OneLake automaticky vygeneruje príslušné metaúdaje Delta Lake (denník Delta) pre túto tabuľku, čím sa metaúdaje delta Lake sprístupnia prostredníctvom tejto skratky.
Dôležité
Táto funkcia je vo verzii Preview.
Tento článok obsahuje pokyny na písanie tabuliek Iceberg od snowflake po OneLake, ale táto funkcia je určená na prácu s akýmikoľvek tabuľkami iceberg so súbormi údajov Parquet.
Vytvorenie odkazu na tabuľku s tabuľkou Ľadovec
Ak už máte tabuľku Ľadovec v úložisku podporovanú skratkami OneLake, podľa týchto krokov vytvorte odkaz a zobrazte tabuľku Iceberg s formátom Delta Lake.
Vyhľadajte tabuľku Iceberg. Zistite, kde je uložená tabuľka Iceberg, ktorá môže byť v službe Azure Data Lake Storage, OneLake, Amazon S3, Google Cloud Storage alebo v službe úložiska kompatibilné s technológiou S3.
Poznámka
Ak používate Službu Snowflake a neviete, kde je uložená vaša tabuľka Iceberg, môžete spustiť nasledujúce príkazy, aby ste videli umiestnenie úložiska tabuľky Iceberg.
SELECT SYSTEM$GET_ICEBERG_TABLE_INFORMATION('<table_name>');
Spustením tohto príkazu sa vráti cesta k súboru metaúdajov pre tabuľku Iceberg. V tejto ceste sa dozviete, ktoré konto úložiska obsahuje tabuľku Iceberg (Ľadovec). Tu uvádzame napríklad relevantné informácie na vyhľadanie cesty tabuľky Iceberg uloženej v službe Azure Data Lake Storage:
{"metadataLocation":"azure://<storage_account_path>/<path_within_storage>/<table_name>/metadata/00001-389700a2-977f-47a2-9f5f-7fd80a0d41b2.metadata.json","status":"success"}
Priečinok tabuľka Iceberg musí obsahovať
metadata
priečinok, ktorý obsahuje aspoň jeden súbor končiaci.metadata.json
na .V službe Fabric lakehouse vytvorte novú odkaz v oblasti Tabuľky úchytov jazera, ktoré neslúšia schémou.
Poznámka
Ak sa v priečinku Tables (Tabuľky) vášho jazera zobrazia
dbo
schémy, potom je služba lakehouse povolená schémou a ešte nie je kompatibilná s touto funkciou.Pre cieľovú cestu odkazu vyberte priečinok Tabuľka Ľadovec. Priečinok tabuľka Iceberg obsahuje
metadata
priečinky adata
.Po vytvorení odkazu by sa táto tabuľka mala automaticky zobraziť ako tabuľka Delta Lake vo vašom jazere, ktorá je pripravená na používanie v službe Fabric.
Ak sa vaša nová odkaz na tabuľku Iceberg nezobrazuje ako použiteľná tabuľka, pozrite si časť Riešenie problémov .
Napísanie ľadovcovej tabuľky do služby OneLake pomocou služby Snowflake
Ak používate Snowflake v službe Azure, môžete napísať ľadové tabuľky do služby OneLake pomocou nasledujúcich krokov:
Uistite sa, že kapacita služby Fabric je v rovnakom umiestnení ako vaša inštancia služby Snowflake.
Identifikujte umiestnenie kapacity služby Fabric priradenej k vašej službe Fabric lakehouse. Otvorte nastavenia pracovného priestoru služby Fabric, ktorý obsahuje váš domov jazera.
V ľavom dolnom rohu rozhrania konta Azure v službe Snowflake skontrolujte oblasť Azure konta Snowflake.
Ak sa tieto oblasti líšia, musíte použiť inú kapacitu služby Fabric v tej istej oblasti ako vaše konto Snowflake.
Otvorte ponuku pre oblasť Súbory v objekte lakehouse, vyberte položku Vlastnosti a skopírujte URL adresu tohto priečinka (cesta HTTPS).
Identifikujte svoje ID nájomníka služby Fabric. Vyberte svoj používateľský profil v pravom hornom rohu používateľského rozhrania služby Fabric a ukážte na informačnú bublinu vedľa názvu nájomníka. Skopírujte ID nájomníka.
V službe Snowflake nastavte cestu
EXTERNAL VOLUME
k priečinku Files vo vašom úložnom dome Lakehouse. Ďalšie informácie o nastavení externých objemov Snowflake nájdete tu.Poznámka
Snowflake vyžaduje, aby schéma URL adries bola
azure://
, takže nezabudnite zmeniťhttps://
adresu naazure://
.CREATE OR REPLACE EXTERNAL VOLUME onelake_exvol STORAGE_LOCATIONS = ( ( NAME = 'onelake_exvol' STORAGE_PROVIDER = 'AZURE' STORAGE_BASE_URL = 'azure://<path_to_Files>/icebergtables' AZURE_TENANT_ID = '<Tenant_ID>' ) );
V tejto ukážke sú všetky tabuľky vytvorené pomocou tohto externého objemu uložené v službe Fabric lakehouse v rámci
Files/icebergtables
priečinka.Teraz, keď je vytvorený externý objem, spustite nasledujúci príkaz, čím načítate URL adresu so súhlasom a názov aplikácie, ktorú snowflake používa na zápis do služby OneLake. Túto aplikáciu používa akýkoľvek iný externý objem vo vašom konte služby Snowflake.
DESC EXTERNAL VOLUME onelake_exvol;
Výstup tohto príkazu vráti
AZURE_CONSENT_URL
vlastnosti aAZURE_MULTI_TENANT_APP_NAME
. Poznamenajte si obe hodnoty. Názov multitenantnej aplikácie služby Azure vyzerá ako<name>_<number>
, ale potrebujete len zaznamenať jej<name>
časť.Otvorte URL adresu súhlasu z predchádzajúceho kroku na novej karte prehliadača. Ak chcete pokračovať, pri zobrazení výzvy sa súhlas s požadovanými povoleniami aplikácie.
Vráťte sa do služby Fabric, otvorte pracovný priestor, vyberte položku Spravovať prístup a potom položku Pridať ľudí alebo skupiny. Udeľte aplikácii používanej vaším externým objemom služby Snowflake povolenia potrebné na zapisovanie údajov do domov jazera vo vašom pracovnom priestore. Odporúčame udeliť rolu Prispievateľ .
Vráťte sa do služby Snowflake a vytvorte ľadovec s novým externým objemom.
CREATE OR REPLACE ICEBERG TABLE MYDATABASE.PUBLIC.Inventory ( InventoryId int, ItemName STRING ) EXTERNAL_VOLUME = 'onelake_exvol' CATALOG = 'SNOWFLAKE' BASE_LOCATION = 'Inventory/';
Pomocou tohto príkazu sa v rámci cesty k priečinku definovanej v externom zväzku vytvorí nový priečinok tabuľky Iceberg s názvom Inventory.
Pridajte niektoré údaje do tabuľky Iceberg.
INSERT INTO MYDATABASE.PUBLIC.Inventory VALUES (123456,'Amatriciana');
Nakoniec v oblasti Tabuľky toho istého jazera môžete vytvoriť odkaz OneLake na tabuľku Ľadovec. Prostredníctvom tejto skratky sa vaša tabuľka Iceberg (Ľadovec) zobrazí ako tabuľka Delta Lake na spotrebu v rámci vyťažení služby Fabric.
Riešenie problémov
Nasledujúce tipy vám pomôžu zabezpečiť kompatibilitu tabuliek Iceberg s touto funkciou:
Kontrola štruktúry priečinkov vašej tabuľky Iceberg
Otvorte priečinok Iceberg v preferovanom nástroji prieskumníka úložiska a skontrolujte zoznam adresárov priečinka Iceberg v pôvodnom umiestnení. Mala by sa zobraziť štruktúra priečinkov ako v nasledujúcom príklade.
../
|-- MyIcebergTable123/
|-- data/
|-- snow_A5WYPKGO_2o_APgwTeNOAxg_0_1_002.parquet
|-- snow_A5WYPKGO_2o_AAIBON_h9Rc_0_1_003.parquet
|-- metadata/
|-- 00000-1bdf7d4c-dc90-488e-9dd9-2e44de30a465.metadata.json
|-- 00001-08bf3227-b5d2-40e2-a8c7-2934ea97e6da.metadata.json
|-- 00002-0f6303de-382e-4ebc-b9ed-6195bd0fb0e7.metadata.json
|-- 1730313479898000000-Kws8nlgCX2QxoDHYHm4uMQ.avro
|-- 1730313479898000000-OdsKRrRogW_PVK9njHIqAA.avro
|-- snap-1730313479898000000-9029d7a2-b3cc-46af-96c1-ac92356e93e9.avro
|-- snap-1730313479898000000-913546ba-bb04-4c8e-81be-342b0cbc5b50.avro
Ak sa nezobrazuje priečinok metaúdajov alebo ak sa nezobrazujú súbory s príponami uvedenými v tomto príklade, možno nemáte správne vygenerovanú tabuľku Iceberg (Ľadovec).
Skontrolujte denník konverzie
Keď sa tabuľka Iceberg virtualizuje ako tabuľka Delta Lake, priečinok s názvom _delta_log/
sa nachádza v priečinku odkazu. Tento priečinok obsahuje metaúdaje formátu Delta Lake (denník Delta) po úspešnej konverzii.
Tento priečinok obsahuje latest_conversion_log.txt
aj súbor obsahujúci podrobnosti o úspešnej alebo neúspešnej konverzii poslednej pokusy o konverziu.
Ak chcete zobraziť obsah tohto súboru po vytvorení odkazu, otvorte ponuku pre odkaz na tabuľku Ľadovec v časti Tabuľky v úzadí jazera a vyberte položku Zobraziť súbory.
Mala by sa zobraziť štruktúra ako v nasledujúcom príklade:
Tables/
|-- MyIcebergTable123/
|-- data/
|-- <data files>
|-- metadata/
|-- <metadata files>
|-- _delta_log/ <-- Virtual folder. This folder doesn't exist in the original location.
|-- 00000000000000000000.json
|-- latest_conversion_log.txt <-- Conversion log with latest success/failure details.
Otvorte súbor denníka konverzií a zobrazia sa najnovšie podrobnosti o čase konverzie alebo zlyhaní. Ak sa súbor denníka konverzie nezobrazuje, konverzia sa nepokúsila.
Ak sa konverzia nepokúsila
Ak sa nezobrazuje súbor denníka konverzií, konverzia sa nepokúsila. Tu sú dva bežné dôvody pokusu o konverziu:
Odkaz nebol vytvorený na správnom mieste.
Ak chcete skonvertovať odkaz na tabuľku Iceberg na formát Delta Lake, odkaz musí byť umiestnený priamo pod priečinok Tables v úložnom dome lakehouse, ktorý nie je povolený schémou. Odkaz by ste nemali umiestniť do časti Súbory ani do iného priečinka, ak chcete, aby sa tabuľka automaticky virtualizovala ako tabuľka Delta Lake.
Cieľová cesta odkazu nie je cesta k priečinku Iceberg.
Keď vytvoríte odkaz, cesta k priečinku, ktorú vyberiete v cieľovom úložisku, musí byť iba priečinok Tabuľka Iceberg. Tento priečinok
metadata
priečinky adata
.
Obmedzenia a dôležité informácie
Pri používaní tejto funkcie majte na pamäti nasledujúce dočasné obmedzenia:
Podporované typy údajov
Nasledujúce typy údajov stĺpca Ľadovec sa priraďujú k príslušným typom Delta Lake pomocou tejto funkcie.
Typ stĺpca Ľadovec Typ stĺpca Delta Lake Komentáre int
integer
long
long
Pozrite si tému Problém so šírkou typu. float
float
double
double
Pozrite si tému Problém so šírkou typu. decimal(P, S)
decimal(P, S)
Pozrite si tému Problém so šírkou typu. boolean
boolean
date
date
timestamp
timestamp_ntz
Typ timestamp
údajov Ľadovec neobsahuje informácie o časovom pásme. Typtimestamp_ntz
Delta Lake nie je plne podporovaný vo vyťaženiach služby Fabric. Odporúčame používať časové pečiatky s zahrnutými časovými pásmami.timestamptz
timestamp
Ak chcete použiť tento typ v službe Snowflake, zadajte timestamp_ltz
ako typ stĺpca počas vytvárania tabuľky Iceberg. Ďalšie informácie o typoch údajov ľadovec podporovaných v službe Snowflake nájdete tu.string
string
binary
binary
Problém so šírkou typu
Ak používate Snowflake na zápis tabuľky Iceberg a tabuľka obsahuje typy stĺpcov
INT64
,double
aleboDecimal
s presnosťou >= 10, výsledná virtuálna tabuľka Delta Lake nemusí byť spotrebná všetkými motormi služby Fabric. Môžu sa zobraziť chyby, ako napríklad:Parquet column cannot be converted in file ... Column: [ColumnA], Expected: decimal(18,4), Found: INT32.
Na odstránení tohto problému pracujeme.
Alternatívne riešenie: Ak používate používateľské rozhranie ukážky tabuľky Lakehouse a vidíte tento problém, túto chybu môžete vyriešiť prepnutím na zobrazenie koncového bodu SQL (v pravom hornom rohu, výberom zobrazenia Lakehouse, prepnutím na koncový bod SQL) a zobrazením ukážky tabuľky. Ak sa potom prepnete späť na zobrazenie Lakehouse, ukážka tabuľky by sa mala zobraziť správne.
Ak používate poznámkový blok služby Spark alebo úlohu a stretnete sa s týmto problémom, túto chybu môžete vyriešiť nastavením konfigurácie
spark.sql.parquet.enableVectorizedReader
služby Spark na hodnotufalse
. Nižšie je uvedený príklad príkazu PySpark na spustenie v poznámkovom bloku Služby Spark:spark.conf.set("spark.sql.parquet.enableVectorizedReader","false")
Úložisko metaúdajov tabuľky Ľadovec nie je prenosné
Súbory metaúdajov tabuľky Iceberg odkazujú navzájom pomocou absolútnych odkazov na cestu. Ak skopírujete alebo premiestnite obsah priečinka tabuľky Iceberg na iné miesto bez prepísania súborov metaúdajov Ľadovec, čitateľom ľadovca sa tabuľka stane nečitateľnou, vrátane tejto funkcie OneLake.
Alternatívne riešenie:
Ak potrebujete presunúť tabuľku Ľadovec na iné miesto na použitie tejto funkcie, použite nástroj, ktorý pôvodne napísal tabuľku Iceberg na napísanie novej tabuľky Iceberg na požadovanom mieste.
Ľadové tabuľky musia byť hlbšie ako koreňová úroveň
Priečinok tabuľka Iceberg v úložisku musí byť umiestnený v adresári umiestnené hlbšie ako v kontajneri alebo na úrovni kontajnera. Ľadové tabuľky uložené priamo v koreňovom adresári kontajnera alebo kontajnera sa nemusia virtualizovať vo formáte Delta Lake.
Pracujeme na vylepšení, aby sme túto požiadavku odstránili.
Alternatívne riešenie:
Skontrolujte, či sú všetky tabuľky iceberg uložené v adresári hlbšom ako koreňový adresár kontajnera.
Priečinky tabuľky Iceberg musia obsahovať iba jednu množinu súborov metaúdajov
Ak zrušíte množinu údajov a znova vytvoríte tabuľku Ľadovec v službe Snowflake, súbory metaúdajov sa nevyčistia. Toto správanie podporuje funkciu v službe
UNDROP
Snowflake. Keďže však váš odkaz odkazuje priamo na priečinok a tento priečinok má teraz viacero množín súborov metaúdajov, nemôžeme tabuľku konvertovať, kým neodstránite súbory metaúdajov starej tabuľky.V súčasnosti sa v tomto scenári pokúša o konverziu, čo môže spôsobiť, že vo virtualizovanej tabuľke Delta Lake sa zobrazí starý obsah tabuľky a informácie schémy.
Pracujeme na oprave, v ktorej konverzia zlyhá, ak sa v priečinku metaúdajov tabuľky Iceberg nájde viac ako jedna množina súborov metaúdajov.
Alternatívne riešenie:
Ak chcete zabezpečiť, aby konvertovaná tabuľka odrážala správnu verziu tabuľky:
- Skontrolujte, či do rovnakého priečinka neukladáte viac ako jednu tabuľku Iceberg.
- Pred opätovným vytvorením tabuľky vyčistíte všetok obsah priečinka tabuľky Iceberg po jeho páde.
Zmeny metaúdajov sa neprejavia okamžite
Ak vykonáte v tabuľke Iceberg zmeny metaúdajov, napríklad pridáte stĺpec, odstránite stĺpec, premenujete stĺpec alebo zmeníte typ stĺpca, tabuľka sa nemusí obnoviť, kým sa nevykoná zmena údajov, ako je napríklad pridanie riadka údajov.
Pracujeme na oprave, ktorá vyberie správny najnovší súbor metaúdajov, ktorý obsahuje najnovšiu zmenu metaúdajov.
Alternatívne riešenie:
Po vykonaní zmeny schémy v tabuľke Iceberg (Ľadovec) pridajte riadok údajov alebo vykonajte zmeny v údajoch. Po tejto zmene by ste mali mať možnosť obnoviť a zobraziť najnovšie zobrazenie tabuľky v službe Fabric.
Pracovné priestory s podporou schémy zatiaľ nie sú podporované
Ak v službe lakehouse s podporou schémy vytvoríte odkaz Ľadovec, konverzia sa pre túto skratku nevyskytuje.
Pracujeme na vylepšení na odstránení tohto obmedzenia.
Alternatívne riešenie:
S touto funkciou použite jazero, ktoré nie je povolené schémou. Toto nastavenie môžete nakonfigurovať počas vytvárania jazera.
Obmedzenie dostupnosti oblasti
Funkcia zatiaľ nie je k dispozícii v týchto oblastiach:
- Katarská centrála
- Nórsko západ
Alternatívne riešenie:
Pracovné priestory pripojené k kapacitám služby Fabric v iných oblastiach môžu používať túto funkciu. Pozrite si úplný zoznam oblastí, kde je k dispozícii služba Microsoft Fabric.
Nepodporované súkromné prepojenia
Táto funkcia nie je momentálne podporovaná pre nájomníkov alebo pracovné priestory, ktoré majú povolené súkromné prepojenia.
Pracujeme na vylepšení na odstránení tohto obmedzenia.
Obmedzenie veľkosti tabuľky
Máme dočasné obmedzenie veľkosti tabuľky Ľadovec, ktoré táto funkcia podporuje. Maximálny podporovaný počet údajových súborov Parquet je približne 5 000 údajových súborov alebo približne 1 miliarda riadkov, pričom ktorýkoľvek limit nastane ako prvý.
Pracujeme na vylepšení na odstránení tohto obmedzenia.
Skratky OneLake musia byť v rovnakej oblasti
Používanie tejto funkcie je obmedzené dočasne s odkazmi, ktoré odkazujú na umiestnenia OneLake: cieľové umiestnenie odkazu sa musí nachádzať v tej istej oblasti ako samotná skratka.
Pracujeme na vylepšení, aby sme túto požiadavku odstránili.
Alternatívne riešenie:
Ak máte odkaz OneLake na tabuľku Iceberg v inom jazere, uistite sa, že druhý lakehouse je spojený s kapacitou v tej istej oblasti.
prepínač nájomníka umožňujúci externý prístup
Máme dočasné obmedzenie, ktoré vyžaduje Povolenie nastavenia nájomníka "Používatelia môžu získať prístup k údajom uloženým v službe OneLake s aplikáciami externými do služby Fabric".
Ak je toto nastavenie nájomníka zakázané, virtualizácia tabuliek Iceberg (Ľadovec) vo formáte Delta Lake nebude úspešná.
Alternatívne riešenie:
Ak je to možné, požiadajte správcu nájomníka služby Fabric o povolenie Používatelia môžu získať prístup k údajom uloženým v službe OneLake s aplikáciami externými pre službu Fabric nájomníka.
ľadovec tabuľky musia byť kopírovať na zapisovanie (nie zlúčiť na čítanie)
V súčasnosti musí byť tabuľka Iceberg typu kopírovať a zapisovať. To znamená, že nemôžu obsahovať odstraňované súbory ani ich zlúčením.
Snowflake v súčasnosti produkuje copy-on-write ľadovec tabuliek, ale ostatné Ľadovec spisovatelia môžu nasledovať iný prístup.
Pracujeme na podpore zlúčených tabuľkách Ľadovec.
Súvisiaci obsah
- Ďalšie informácie o zabezpečení Fabric a OneLake.
- Získajte ďalšie informácie o skratkách OneLake.