Jaa


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.

Tärkeä

Tämä ominaisuus on esikatselutilassa.

Kaavio, joka havainnollistaa Delta Lake -metatietojen virtualisointia.

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.

  1. 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.

  2. 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.

    Näyttökuva, jossa näkyy pikakuvakkeen luontivalikkokohde Kohdassa Taulukot.

  3. Valitse pikakuvakkeen kohdepolulle Iceberg-taulukkokansio. Iceberg-taulukkokansio sisältää -ja data -metadatakansiot.

  4. Kun pikakuvake on luotu, tämä taulukko näkyy automaattisesti Lakehousen Delta Lake -taulukkona, jota voit käyttää kaikkialla Fabricissa.

    Näyttökuva, jossa näkyy onnistunut Iceberg-taulukon pikakuvakkeen luominen.

    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:

  1. 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.

    Näyttökuvassa on Fabric-kapasiteetin alue.

    Tarkista Snowflake-tilisi vasemmasta alakulmasta Azure-tilin käyttöliittymässä Snowflake-tilin Azure-alue.

    Näyttökuva, jossa näkyy Snowflake-tilin alue.

    Jos nämä alueet ovat erilaisia, sinun on käytettävä eri Fabric-kapasiteettia samalla alueella kuin Snowflake-tilisi.

  2. Avaa Lakehousen Tiedostot-alueen valikko, valitse Ominaisuudet ja kopioi kyseisen kansion URL-osoite (HTTPS-polku).

    Näyttökuva, jossa näkyy Ominaisuudet-valikkokohde.

  3. 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.

    Näyttökuvassa on vuokraajan tunnus.

  4. 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 vaihtaa https:// arvoon azure://.

    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 .

  5. 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_URLominaisuudet. Pane molemmat arvot muistiin. Azuren usean sovelluksen nimi näyttää <name>_<number>tältä, mutta sinun tarvitsee siepata vain osa <name> .

  6. Avaa suostumuksen URL-osoite edellisessä vaiheessa uudessa selainvälilehdessä. Jos haluat jatkaa, hyväksy vaaditut sovelluskäyttöoikeudet pyydettäessä.

  7. 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ä.

  8. 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.

  9. Lisää joitakin tietoja Iceberg-taulukkoon.

    INSERT INTO MYDATABASE.PUBLIC.Inventory
    VALUES
    (123456,'Amatriciana');
    
  10. 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.

Näyttökuva Näytä tiedostot -valikkokohde.

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.

    Näyttökuva, jossa näkyy pikakuvakkeen oikea sijainti Taulukot-kansiossa.

  • 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 -metadatakansiot.

    Näyttökuva, jossa näkyy pikakuvakkeen kohdepolun sisältö pikakuvakkeen luonnin aikana.

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, , doubletai Decimal 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 arvoksi false. 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.