Iceberg-taulukoiden käyttäminen OneLaken kanssa
Microsoft OneLakessa voit luoda Apache Iceberg -taulukoiden pikakuvakkeita, jotka mahdollistavat niiden käytön monissa erilaisissa Fabric-kuormituksissa. Tämä toiminto on mahdollista metatieto virtualisointi-ominaisuuden avulla, jonka avulla Iceberg-taulukot voidaan tulkita Delta Lake -taulukoiksi pikakuvakkeen näkökulmasta. Kun luot iceberg-taulukkokansion pikakuvakkeen, OneLake luo automaattisesti vastaavat Delta Lake -metatiedot (Delta-loki) kyseiselle taulukolle, jolloin Delta Lake -metatiedot ovat käytettävissä pikakuvakkeen kautta.
Vaikka tämä artikkeli sisältää ohjeita Iceberg-taulukoiden kirjoittamiseen Snowflakesta OneLakeen, tämä ominaisuus on tarkoitettu käytettäväksi Kaikkien Parquet-datatiedostoja sisältävien Iceberg-taulukoiden kanssa.
Iceberg-taulukon taulukon pikakuvakkeen luominen
Jos tallennussijainnissa on jo Iceberg-taulukko, jota OneLake-pikakuvakkeet tukevat, luo pikakuvake noudattamalla seuraavia ohjeita. Iceberg-taulukkosi tulee näkyviin Delta Lake -muodossa.
Etsi Iceberg-taulukkosi. Etsi Iceberg-taulukon tallennuspaikka, joka voi olla Azure Data Lake Storage, OneLakessa, Amazon S3:ssa, Google Cloud Storagessa tai S3-yhteensopivassa tallennuspalvelussa.
Muistiinpano
Jos käytät Snowflakea etkä ole varma, minne Iceberg-taulukkosi on tallennettu, voit tarkistaa Iceberg-taulukkosi tallennussijainnin suorittamalla seuraavan lausekkeen.
SELECT SYSTEM$GET_ICEBERG_TABLE_INFORMATION('<table_name>');
Tämän lausekkeen suorittaminen palauttaa polun Iceberg-taulukon metatietotiedostoon. Tämä polku kertoo, mikä tallennustili sisältää Iceberg-taulukon. Tässä ovat esimerkiksi olennaiset tiedot, joiden avulla voit löytää Azure Data Lake Storage tallennetun Iceberg-taulukon polun:
{"metadataLocation":"azure://<storage_account_path>/<path_within_storage>/<table_name>/metadata/00001-389700a2-977f-47a2-9f5f-7fd80a0d41b2.metadata.json","status":"success"}
Iceberg-taulukkokansiossa
metadata
on oltava kansio, joka itse sisältää vähintään yhden tiedoston, jonka pääte on.metadata.json
.Luo Fabric Lakehousessa uusi pikakuvake Taulukoiden alueelle, joka ei ole rakennetta tukeva lakehouse.
Muistiinpano
Jos näet rakenteet, kuten
dbo
Lakehousen Taulukot-kansiossa, Lakehouse on rakenne käytössä eikä ole vielä yhteensopiva tämän ominaisuuden kanssa.Valitse pikakuvakkeen kohdepolulle Iceberg-taulukkokansio. Iceberg-taulukkokansio sisältää -ja
data
-metadata
kansiot.Kun pikakuvake on luotu, tämä taulukko näkyy automaattisesti Lakehousen Delta Lake -taulukkona, jota voit käyttää kaikkialla Fabricissa.
Jos uusi Iceberg-taulukon pikakuvake ei näy käyttökelpoisessa taulukossa, tarkista Vianmääritys-osa.
Iceberg-taulukon kirjoittaminen OneLakeen Snowflaken avulla
Jos käytät Snowflakea Azuressa, voit kirjoittaa Iceberg-taulukot OneLakeen seuraavasti:
Varmista, että Fabric-kapasiteettisi on samassa Azure-sijainnissa kuin Snowflake-esiintymäsi.
Selvitä Fabric Lakehouse -laitteeseesi liittyvän Fabric-kapasiteetin sijainti. Avaa lakehousesi sisältävän Fabric-työtilan asetukset.
Tarkista Snowflake-tilisi vasemmasta alakulmasta Azure-tilin käyttöliittymässä Snowflake-tilin Azure-alue.
Jos nämä alueet ovat erilaisia, sinun on käytettävä eri Fabric-kapasiteettia samalla alueella kuin Snowflake-tilisi.
Avaa Lakehousen Tiedostot-alueen valikko, valitse Ominaisuudet ja kopioi kyseisen kansion URL-osoite (HTTPS-polku).
Tunnista Fabric-vuokraajatunnuksesi. Valitse käyttäjäprofiilisi Fabric-käyttöliittymän oikeasta yläkulmasta ja vie hiiren osoitin Vuokraajan nimen vieressä olevan tietokuplan päälle. Kopioi vuokraajatunnus.
Määritä Snowflakessa käytössäsi
EXTERNAL VOLUME
oleva polku Lakehousen Tiedostot-kansioon. Lisätietoja Snowflaken ulkoisten määrien määrittämisestä on täällä.Muistiinpano
Snowflake edellyttää, että URL-osoitteen malli on
azure://
, joten muista vaihtaahttps://
arvoonazure://
.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>' ) );
Tässä esimerkissä kaikki tätä ulkoista levyä käyttävät taulukot tallennetaan Fabric Lakehouse -kansioon -kansioon
Files/icebergtables
.Nyt kun ulkoinen määrä on luotu, suorita seuraava komento, joka hakee suostumuksen URL-osoitteen ja nimen sovellukselle, jota Snowflake käyttää OneLakeen kirjoittamiseen. Snowflake-tilisi muu ulkoinen määrä käyttää tätä sovellusta.
DESC EXTERNAL VOLUME onelake_exvol;
Tämän komennon tuloste palauttaa - ja
AZURE_MULTI_TENANT_APP_NAME
-AZURE_CONSENT_URL
ominaisuudet. Pane molemmat arvot muistiin. Azuren usean sovelluksen nimi näyttää<name>_<number>
tältä, mutta sinun tarvitsee siepata vain osa<name>
.Avaa suostumuksen URL-osoite edellisessä vaiheessa uudessa selainvälilehdessä. Jos haluat jatkaa, hyväksy vaaditut sovelluskäyttöoikeudet pyydettäessä.
Avaa Fabricissa työtilasi, valitse Käyttöoikeuksien hallinta ja sitten Lisää henkilöitä tai ryhmiä. Myönnä Snowflaken ulkoisen aseman käyttämälle sovellukselle oikeudet kirjoittaa tietoja työtilasi Lakehouse-tallennustiloihin. Suosittelemme osallistujan roolin myöntämistä.
Luo Snowflakessa Iceberg-taulukko uuden ulkoisen aseman avulla.
CREATE OR REPLACE ICEBERG TABLE MYDATABASE.PUBLIC.Inventory ( InventoryId int, ItemName STRING ) EXTERNAL_VOLUME = 'onelake_exvol' CATALOG = 'SNOWFLAKE' BASE_LOCATION = 'Inventory/';
Tällä lausekkeella luodaan uusi Iceberg-taulukkokansio nimeltä Inventory ulkoisessa tilavuudessa määritetyn kansiopolun sisälle.
Lisää joitakin tietoja Iceberg-taulukkoon.
INSERT INTO MYDATABASE.PUBLIC.Inventory VALUES (123456,'Amatriciana');
Voit lopuksi luoda saman lakehousen Tables-alueelle OneLake-pikakuvakkeen Iceberg-taulukkoosi. Tämän pikakuvakkeen avulla Iceberg-taulukko näkyy Delta Lake -taulukkona, jota käytetään fabric-kuormitusten kulutukseen.
Vianmääritys
Seuraavien vinkkien avulla voit varmistaa, että Iceberg-taulukkosi ovat yhteensopivia tämän ominaisuuden kanssa:
Tarkista Iceberg-taulukon kansiorakenne
Avaa Iceberg-kansio haluamassasi tallennustilan hallintatyökalussa ja tarkista Iceberg-kansiosi hakemistotiedosto sen alkuperäisessä sijainnissa. Kansiorakenteen pitäisi näkyä seuraavan esimerkin kaltaisena.
../
|-- 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
Jos et näe metatietokansiota tai jos et näe tiedostoja, joiden tunnisteet näkyvät tässä esimerkissä, sinulla ei ehkä ole oikein luotua Iceberg-taulukkoa.
Tarkista muuntoloki
Kun Iceberg-taulukko virtualisoidaan Delta Lake -taulukoksi, pikakansiosta löytyy kansio nimeltä _delta_log/
. Tämä kansio sisältää Delta Lake -muodon metatiedot (Delta-loki) onnistuneen muunnoksen jälkeen.
Tämä kansio sisältää latest_conversion_log.txt
myös tiedoston, joka sisältää viimeisimmän muunnon yrityksen onnistumisen tai epäonnistumisen tiedot.
Jos haluat nähdä tämän tiedoston sisällön pikakuvakkeen luomisen jälkeen, avaa Iceberg-taulukon pikakuvakkeen valikko Lakehousen Taulukot-alueella ja valitse Näytä tiedostot.
Sinun pitäisi nähdä seuraavanlainen rakenne:
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.
Avaa muuntolokitiedosto, niin näet viimeisimmän muuntamisen ajan tai epäonnistumisen tiedot. Jos et näe muuntolokitiedostoa, muuntamista ei yritettiin tehdä.
Jos muuntamista ei yritettiin
Jos et näe muuntolokitiedostoa, muuntamista ei yritettiin tehdä. Seuraavassa on kaksi yleistä syytä, miksi muuntamista ei yritetä:
Pikakuvaketta ei ole luotu oikeaan paikkaan.
Jotta Iceberg-taulukon pikakuvake voidaan muuntaa Delta Lake -muotoon, pikakuvake on sijoitettava suoraan ei-rakennetta käyttävän Lakehousen Taulukot-kansioon. Pikakuvaketta ei kannata sijoittaa Tiedostot-osioon tai toiseen kansioon, jos haluat, että taulukko virtualisoidaan automaattisesti Delta Lake -taulukkona.
Pikakuvakkeen kohdepolku ei ole Iceberg-kansion polku.
Kun luot pikakuvakkeen, kohdesäilössä valitsemasi kansiopolun täytyy olla vain Iceberg-taulukkokansio. Tämä kansio sisältää -ja
data
-metadata
kansiot.
Rajoitukset ja huomioitavat seikat
Muista seuraavat tilapäiset rajoitukset, kun käytät tätä ominaisuutta:
Tuetut tietotyypit
Seuraavat Iceberg-sarakkeen tietotyypit on yhdistetty vastaaviin Delta Lake -tyyppeihinsä tällä ominaisuudella.
Iceberg-saraketyyppi Delta Lake -saraketyyppi Kommentit int
integer
long
long
Katso Tyypin leveysongelma. float
float
double
double
Katso Tyypin leveysongelma. decimal(P, S)
decimal(P, S)
Katso Tyypin leveysongelma. boolean
boolean
date
date
timestamp
timestamp_ntz
Iceberg-tietotyyppi timestamp
ei sisällä aikavyöhyketietoja. Delta Lake -timestamp_ntz
tyyppiä ei tueta täysin kaikissa Fabric-kuormitusten kanssa. Suosittelemme aikaleiman käyttämistä aikavyöhykkeiden kanssa.timestamptz
timestamp
Jos haluat käyttää Snowflakessa tätä tyyppiä, määritä timestamp_ltz
saraketyyppi Iceberg-taulukon luonnin aikana. Lisätietoja Snowflaken tukemista Iceberg-tietotyypeistä on täällä.string
string
binary
binary
Tyypin leveysongelma
Jos käytät Snowflakea Iceberg-taulukon kirjoittamiseen ja taulukko sisältää saraketyyppejä
INT64
, ,double
taiDecimal
tarkkuudella >= 10, kaikki Fabric-moottorit eivät ehkä voi käyttää tuloksena saatavaa Delta Lake -taulukkoa. Saatat nähdä virheitä, kuten:Parquet column cannot be converted in file ... Column: [ColumnA], Expected: decimal(18,4), Found: INT32.
Pyrimme korjaamaan tämän ongelman.
Vaihtoehtoinen menetelmä: Jos käytät Lakehouse-taulukon esikatselun käyttöliittymää ja näet tämän ongelman, voit korjata tämän virheen vaihtamalla SQL Endpoint -näkymään (oikeassa yläkulmassa, valitsemalla Lakehouse-näkymän, vaihtamalla SQL Endpointiin) ja esikatselemalla taulukkoa sieltä. Jos vaihdat sitten takaisin Lakehouse-näkymään, taulukon esikatselun pitäisi näkyä oikein.
Jos suoritat Spark-muistikirjaa tai työtä ja kohtaat tämän ongelman, voit korjata tämän virheen määrittämällä Spark-määrityksen
spark.sql.parquet.enableVectorizedReader
arvoksifalse
. Tässä on esimerkki PySpark-komennosta, joka suoritetaan Spark-muistikirjassa:spark.conf.set("spark.sql.parquet.enableVectorizedReader","false")
Iceberg-taulukon metatietojen tallennus ei ole kannettava
Iceberg-taulukon metatietotiedostot viittaavat toisiinsa absoluuttisten polkuviittausten avulla. Jos kopioit tai siirrät Iceberg-taulukon kansion sisällön toiseen sijaintiin kirjoittamatta Icebergin metatietotiedostoja uudelleen, Icebergin lukijat eivät voi lukea taulukkoa, mukaan lukien tämä OneLake-ominaisuus.
Vaihtoehtoinen menetelmä:
Jos haluat siirtää Iceberg-taulukkosi toiseen sijaintiin tämän ominaisuuden käyttämiseksi, käytä työkalua, joka alun perin kirjoitti Iceberg-taulukon ja kirjoitti uuden Iceberg-taulukon haluamassasi sijainnissa.
Iceberg-taulukoiden on oltava syvemmällä kuin päätaso
Tallennustilassa olevan Iceberg-taulukkokansion on sijaittava säilön tai säilön tasoa syvemmällä olevassa hakemistossa. Iceberg-taulukoita, jotka on tallennettu suoraan säilön tai säilön päähakemistoon, ei saa virtualisoida Delta Lake -muotoon.
Pyrimme parantamaan vaatimusta.
Vaihtoehtoinen menetelmä:
Varmista, että Kaikki Iceberg-taulukot on tallennettu hakemistoon syvemmin kuin säilön tai säilön päähakemisto.
Iceberg-taulukkokansioiden tulee sisältää vain yksi joukko metatietotiedostoja.
Jos pudotat Iceberg-taulukon ja luot sen uudelleen Snowflakessa, metatietotiedostoja ei puhdisteta. Snowflake tukee
UNDROP
tätä toimintoa. Koska pikakuvake osoittaa suoraan kansioon ja kyseisessä kansiossa on nyt useita metatietotiedostoja, emme voi muuntaa taulukkoa ennen kuin poistat vanhan taulukon metatietotiedostot.Tällä hetkellä tässä skenaariossa yritetään muuntaa, jolloin vanha taulukkosisältö ja rakennetiedot voidaan näyttää virtualisoidussa Delta Lake -taulukossa.
Pyrimme korjaamaan sitä, että muuntaminen epäonnistuu, jos Iceberg-taulukon metatietokansiosta löytyy useita metatietotiedostoja.
Vaihtoehtoinen menetelmä:
Varmista, että muunnettu taulukko kuvastaa taulukon oikeaa versiota:
- Varmista, että et tallenna useampaa kuin yhtä Iceberg-taulukkoa samaan kansioon.
- Puhdista Iceberg-taulukkokansion sisältö sen poistamisen jälkeen, ennen kuin luot taulukon uudelleen.
Metatietomuutokset eivät näy heti
Jos teet metatietomuutoksia Iceberg-taulukkoon, esimerkiksi lisäät sarakkeen, poistat sarakkeen, nimeät sarakkeen uudelleen tai muutat saraketyyppiä, taulukkoa ei ehkä voi muuttaa uudelleen ennen tietojen muutosta, kuten tietorivin lisäämistä.
Kehitämme korjausta, joka hakee oikean uusimman metatietotiedoston, joka sisältää viimeisimmän metatietomuutoksen.
Vaihtoehtoinen menetelmä:
Kun olet tehnyt rakenteen muutoksen Iceberg-taulukkoon, lisää tietorivi tai tee muita muutoksia tietoihin. Tämän muutoksen jälkeen sinun pitäisi pystyä päivittämään ja näkemään taulukon uusin näkymä Fabricissa.
Rakenteen mahdollistamia työtiloja ei vielä tueta
Jos luot Iceberg-pikakuvakkeen rakennetta käyttävään Lakehouse-järjestelmään, pikakuvaketta ei muunneta.
Pyrimme parannuksiin tämän rajoituksen poistamiseksi.
Vaihtoehtoinen menetelmä:
Käytä tässä ominaisuudessa ei-rakennetta käyttävää lakehousea. Voit määrittää tämän asetuksen Lakehousen luomisen aikana.
Alueen käytettävyyden rajoitus
Ominaisuus ei ole vielä käytettävissä seuraavilla alueilla:
- Qatar, keskinen
- Norja, läntinen
Vaihtoehtoinen menetelmä:
Fabric-kapasiteetteihin liitetyt työtilat muilla alueilla voivat käyttää tätä ominaisuutta. Katso täydellinen luettelo alueista, joissa Microsoft Fabric on saatavilla.
Yksityisiä linkkejä ei tueta
Tätä ominaisuutta ei tällä hetkellä tueta vuokraajille tai työtiloille, joissa yksityiset linkit ovat käytössä.
Pyrimme parannuksiin tämän rajoituksen poistamiseksi.
Taulukon koon rajoitus
Tämä ominaisuus tukee väliaikaisesti Iceberg-taulukon kokoa. Parquet-datatiedostojen tuettu enimmäismäärä on noin 5 000 datatiedostoa eli noin miljardi riviä, minkä tahansa rajana on ensin.
Pyrimme parannuksiin tämän rajoituksen poistamiseksi.
OneLake-pikakuvakkeiden on oltava samalla alueella
Tämän ominaisuuden käyttöä on rajoitettu väliaikaisesti OneLake-sijainteihin viittaavien pikakuvakkeiden avulla: pikakuvakkeen kohdesijainnin on oltava samalla alueella kuin itse pikakuvake.
Pyrimme parantamaan vaatimusta.
Vaihtoehtoinen menetelmä:
Jos sinulla on OneLake-pikakuvake Iceberg-taulukkoon toisessa lakehousessa, varmista, että toinen lakehouse on liitetty kapasiteettiin samalla alueella.
Liittyvä sisältö
- Lue lisätietoja Fabricin ja OneLaken suojauksesta.
- Lue lisää OneLake-pikakuvakkeista.