Udostępnij przez


Używanie tabel góry lodowej z usługą OneLake

W usłudze Microsoft OneLake można bezproblemowo pracować z tabelami zarówno w formatach Delta Lake, jak i Apache Iceberg.

Ta elastyczność jest umożliwiona dzięki wirtualizacji metadanych, funkcji, która pozwala interpretować tabele Iceberg jako tabele Delta Lake i odwrotnie. Możesz bezpośrednio zapisywać tabele Iceberg lub tworzyć do nich skróty, co sprawia, że te tabele są dostępne w różnych obciążeniach w ramach Fabric. Podobnie tabele Fabric zapisane w formacie Delta Lake można odczytywać przy użyciu czytników Iceberg.

Podczas pisania lub tworzenia skrótu do folderu tabeli Iceberg, OneLake automatycznie generuje wirtualne metadane Delta Lake (dziennik Delta) dla tabeli, co umożliwia jej użycie z obciążeniami Fabric. Z drugiej strony tabele usługi Delta Lake zawierają teraz wirtualne metadane góry lodowej, co pozwala na zgodność z czytnikami góry lodowej.

Diagram przedstawiający transformację tabeli z Iceberg do Delta Lake.

Chociaż ten artykuł zawiera wskazówki dotyczące korzystania z tabel Iceberg w systemie Snowflake, ta funkcja jest przeznaczona do pracy z dowolnymi tabelami Iceberg, które mają pliki danych w formacie Parquet przechowywane w magazynie.

Wirtualizuj tabele Delta Lake jako Iceberg

Aby skonfigurować automatyczną konwersję i wirtualizację tabel z formatu usługi Delta Lake do formatu Iceberg, wykonaj następujące kroki.

Ważne

Ta funkcja jest dostępna w wersji zapoznawczej.

  1. Aby umożliwić automatyczną wirtualizację tabel Delta Lake do formatu Iceberg, włącz delegowane ustawienie OneLake o nazwie Włącz wirtualizację formatu tabeli Delta Lake do formatu Apache Iceberg w ustawieniach obszaru roboczego.

    Uwaga

    To ustawienie steruje funkcją, która jest obecnie dostępna w wersji zapoznawczej. To ustawienie zostanie usunięte w przyszłej aktualizacji, gdy funkcja zostanie włączona dla wszystkich użytkowników i nie będzie już dostępna w wersji zapoznawczej.

  2. Upewnij się, że tabela usługi Delta Lake lub skrót do niej znajduje się w Tables sekcji elementu danych. Elementem danych może być lakehouse lub inny element danych usługi Fabric.

    Wskazówka

    Jeśli Twój Lakehouse ma włączony schemat, katalog tabel będzie znajdować się bezpośrednio w takim schemacie jak dbo. Jeśli lakehouse nie ma włączonych schematów, katalog tabel będzie znajdować się bezpośrednio w katalogu Tables.

  3. Upewnij się, że tabela Delta Lake została pomyślnie przekonwertowana na wirtualny format Iceberg. Można to zrobić, sprawdzając katalog za tabelą.

    Aby wyświetlić katalog, jeśli tabela znajduje się w lakehouse, możesz kliknąć prawym przyciskiem myszy na tabeli w Fabric UI i wybrać pozycję Wyświetl pliki.

    Jeśli tabela znajduje się w innym typie elementu danych, takim jak repozytorium danych, baza danych lub zduplikowana baza danych, musisz użyć klienta, takiego jak Eksplorator usługi Azure Storage lub Eksplorator plików OneLake, zamiast interfejsu użytkownika Fabric, aby obejrzeć pliki powiązane z tabelą.

  4. Powinien zostać wyświetlony katalog o nazwie metadata wewnątrz folderu tabeli i powinien zawierać wiele plików, w tym plik dziennika konwersji. Otwórz plik dziennika konwersji, aby wyświetlić więcej informacji o konwersji z Delta Lake na Iceberg, w tym znacznik czasu najnowszej konwersji oraz wszelkie szczegóły błędów.

  5. Jeśli plik dziennika konwersji pokazuje, że tabela została pomyślnie przekonwertowana, przeczytaj tabelę Iceberg, używając wybranej usługi, aplikacji lub biblioteki.

    W zależności od używanego czytnika Iceberg, musisz znać ścieżkę do katalogu tabeli lub do najbardziej aktualnego pliku .metadata.json, który jest pokazany w katalogu metadata.

    Możesz wyświetlić ścieżkę HTTP do najnowszego pliku metadanych tabeli, otwierając widok Właściwości dla *.metadata.json pliku o najwyższym numerze wersji. Zanotuj tę ścieżkę.

    Ścieżka do folderu elementu Tables danych może wyglądać następująco:

    https://onelake.dfs.fabric.microsoft.com/83896315-c5ba-4777-8d1c-e4ab3a7016bc/a95f62fa-2826-49f8-b561-a163ba537828/Tables/
    

    W tym folderze ścieżka względna do najnowszego pliku metadanych może wyglądać następująco: dbo/MyTable/metadata/321.metadata.json.

    Aby przeczytać wirtualną tabelę Iceberg przy użyciu usługi Snowflake, wykonaj kroki opisane w tym przewodniku.

Tworzenie skrótu do tabeli góry lodowej

Jeśli masz już tabelę Góry lodowej w lokalizacji magazynu obsługiwanej przez skróty OneLake, wykonaj następujące kroki, aby utworzyć skrót i wyświetlić tabelę Góry lodowej z formatem usługi Delta Lake.

  1. Znajdź tabelę Góry Lodowej. Znajdź miejsce przechowywania tabeli Iceberg, która może znajdować się w usłudze Azure Data Lake Storage, OneLake, Amazon S3, Google Cloud Storage lub usłudze magazynu zgodnej z usługą S3.

    Uwaga

    Jeśli używasz usługi Snowflake i nie masz pewności, gdzie jest przechowywana tabela Iceberg, możesz uruchomić następującą instrukcję, aby wyświetlić lokalizację przechowywania tabeli Iceberg.

    SELECT SYSTEM$GET_ICEBERG_TABLE_INFORMATION('<table_name>');

    Uruchomienie tej instrukcji zwraca ścieżkę do pliku metadanych dla tabeli Iceberg. Ta ścieżka informuje, które konto magazynu zawiera tabelę Góry lodowej. Oto na przykład odpowiednie informacje, aby znaleźć ścieżkę tabeli Góry lodowej przechowywanej w usłudze 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"}

    Folder tabeli Iceberg musi zawierać metadata folder, który zawiera co najmniej jeden plik kończący się na ..metadata.json

  2. W lakehouse Fabric utwórz nowy skrót do tabeli w obszarze Tabele lakehouse'u.

    Wskazówka

    Jeśli zobaczysz schematy, takie jak dbo w folderze Tabele swojego lakehouse, oznacza to, że lakehouse obsługuje schematy. W takim przypadku kliknij prawym przyciskiem myszy schemat i utwórz skrót do tabeli w schemacie.

    Zrzut ekranu przedstawiający nową akcję skrótu.

  3. Aby uzyskać ścieżkę docelową skrótu, wybierz folder Tabela Góry lodowej. Folder tabeli Góry lodowej zawiera metadata foldery i data .

  4. Po utworzeniu skrótu ta tabela powinna zostać automatycznie odzwierciedlona jako tabela usługi Delta Lake w usłudze Lakehouse, gotowa do użycia w całej sieci szkieletowej.

    Zrzut ekranu przedstawiający utworzony skrót.

    Jeśli nowy skrót do tabeli Iceberg nie jest wyświetlany jako tabela do użycia, zapoznaj się z sekcją Rozwiązywanie problemów .

Rozwiązywanie problemów

Poniższe wskazówki mogą pomóc w upewnieniu się, że tabele góry lodowej są zgodne z tą funkcją:

Sprawdzanie struktury folderów tabeli Góry Lodowej

Otwórz folder Iceberg w preferowanym narzędziu eksploratora magazynu i sprawdź listę katalogów folderu Iceberg w oryginalnej lokalizacji. Powinna zostać wyświetlona struktura folderów podobna do poniższego przykładu.

../
|-- MyIcebergTable123/
    |-- data/
        |-- A5WYPKGO_2o_APgwTeNOAxg_0_1_002.parquet
        |-- 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

Jeśli nie widzisz folderu metadanych lub nie widzisz plików z rozszerzeniami przedstawionymi w tym przykładzie, być może nie masz poprawnie wygenerowanej tabeli Góry lodowej.

Sprawdzanie dziennika konwersji

Gdy tabela Góry lodowej jest zwirtualizowana jako tabela usługi Delta Lake, folder o nazwie _delta_log/ można znaleźć w folderze skrótów. Ten folder zawiera metadane formatu usługi Delta Lake (dziennik różnicowy) po pomyślnej konwersji.

Ten folder zawiera latest_conversion_log.txt również plik zawierający szczegóły powodzenia lub niepowodzenia najnowszej próby konwersji.

Aby wyświetlić zawartość tego pliku po utworzeniu skrótu, otwórz menu skrótu do tabeli Góry lodowej w obszarze Tabele w lakehouse i wybierz pozycję Wyświetl pliki.

Zrzut ekranu Przedstawiający element menu Wyświetl pliki.

Powinna zostać wyświetlona struktura podobna do poniższego przykładu:

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.

Otwórz plik dziennika konwersji, aby wyświetlić najnowszy czas konwersji lub szczegóły błędu. Jeśli nie widzisz pliku dziennika konwersji, konwersja nie została podjęta.

Jeśli konwersja nie została podjęta

Jeśli nie widzisz pliku dziennika konwersji, konwersja nie została podjęta. Oto dwie typowe przyczyny, dla których konwersja nie jest podejmowana:

  • Skrót nie został utworzony we właściwym miejscu.

    Aby skrót do tabeli Góry Lodowej został przekonwertowany na format usługi Delta Lake, skrót należy umieścić bezpośrednio w folderze Tables nieobsługiwanego przez schemat lakehouse. Nie należy umieszczać skrótu w sekcji Pliki lub w innym folderze, jeśli chcesz, aby tabela została automatycznie zwirtualizowana jako tabela usługi Delta Lake.

    Zrzut ekranu przedstawiający poprawne umieszczenie skrótu w folderze Tables.

  • Ścieżka docelowa skrótu nie jest ścieżką folderu Iceberg.

    Podczas tworzenia skrótu ścieżka folderu wybrana w docelowej lokalizacji magazynu musi być tylko folderem tabeli Iceberg. Ten folder zawiera foldery metadata i data .

    Zrzut ekranu przedstawiający zawartość ścieżki docelowej skrótu podczas tworzenia skrótów.

Komunikat o błędzie "Nie można zweryfikować regionu pojemności fabricu" w aplikacji Snowflake

Jeśli używasz usługi Snowflake do zapisania nowej tabeli Góry Lodowej w usłudze OneLake, może zostać wyświetlony następujący komunikat o błędzie:

Nie można zweryfikować regionu pojemności sieci szkieletowej. Przyczyna: "Nieprawidłowy token dostępu. Może to być spowodowane uwierzytelnianiem i określeniem zakresu. Sprawdź delegowane zakresy".

Jeśli widzisz ten błąd, poproś administratora dzierżawy usługi Fabric, aby dokładnie sprawdził, czy włączono oba ustawienia dzierżawy wymienione w sekcji Zapisz tabelę Iceberg do OneLake za pomocą Snowflake:

  1. W prawym górnym rogu Fabric UI otwórz Ustawienia, i wybierz Portal administracyjny.
  2. W obszarze Ustawienia dzierżawy w sekcji Ustawienia dewelopera włącz ustawienie z etykietą Elementy serwisowe mogą używać interfejsów API Fabric.
  3. W tym samym obszarze w sekcji Ustawienia usługi OneLake włącz ustawienie Użytkownicy mogą uzyskiwać dostęp do danych przechowywanych w usłudze OneLake za pomocą aplikacji zewnętrznych wobec Fabric.

Ograniczenia i istotne zagadnienia

Podczas korzystania z tej funkcji należy pamiętać o następujących tymczasowych ograniczeniach:

  • Obsługiwane typy danych

    Następujące typy danych kolumny Iceberg mapują na odpowiadające im typy usługi Delta Lake przy użyciu tej funkcji.

    Typ kolumny Góry lodowej Typ kolumny usługi Delta Lake Komentarze
    int integer
    long long Zobacz Problem z szerokością typu.
    float float
    double double Zobacz Problem z szerokością typu.
    decimal(P, S) decimal(P, S) Zobacz Problem z szerokością typu.
    boolean boolean
    date date
    timestamp timestamp_ntz timestamp Typ danych Góry Lodowej nie zawiera informacji o strefie czasowej. timestamp_ntz Typ usługi Delta Lake nie jest w pełni obsługiwany w obciążeniach sieci szkieletowej. Zalecamy używanie sygnatur czasowych z uwzględnionych stref czasowych.
    timestamptz timestamp W obszarze Snowflake, aby użyć tego typu, określ timestamp_ltz jako typ kolumny podczas tworzenia tabeli Iceberg. Więcej informacji na temat typów danych góry lodowej obsługiwanych w usłudze Snowflake można znaleźć tutaj.
    string string
    binary binary
    time N/A Niewspierane
  • Problem z szerokością typu

    Jeśli używasz usługi Snowflake do zapisania tabeli Iceberg, a tabela zawiera typy INT64kolumn , doublelub Decimal z dokładnością >= 10, wynikowa wirtualna tabela usługi Delta Lake może nie być używana przez wszystkie aparaty sieci szkieletowej. Mogą wystąpić błędy, takie jak:

    Parquet column cannot be converted in file ... Column: [ColumnA], Expected: decimal(18,4), Found: INT32.
    

    Pracujemy nad rozwiązaniem tego problemu.

    Obejście: Jeśli używasz interfejsu użytkownika w wersji zapoznawczej tabeli Lakehouse i widzisz ten problem, możesz rozwiązać ten błąd, przełączając się do widoku punktów końcowych SQL (w prawym górnym rogu wybierz widok Lakehouse, przełącz się do punktu końcowego SQL) i wyświetlając podgląd tabeli z tego miejsca. Jeśli następnie przełączysz się z powrotem do widoku lakehouse, podgląd tabeli powinien być wyświetlany prawidłowo.

    Jeśli używasz notesu platformy Spark lub zadania i napotkasz ten problem, możesz rozwiązać ten błąd, ustawiając konfigurację spark.sql.parquet.enableVectorizedReader platformy Spark na falsewartość . Oto przykładowe polecenie PySpark do uruchomienia w notesie platformy Spark:

    spark.conf.set("spark.sql.parquet.enableVectorizedReader","false")
    
  • Magazyn metadanych tabeli góry lodowej nie jest przenośny

    Pliki metadanych tabeli Góry lodowej odwołują się do siebie przy użyciu odwołań ścieżki bezwzględnej. Jeśli skopiujesz lub przeniesiesz zawartość folderu tabeli Iceberg do innej lokalizacji bez ponownego zapisywania plików metadanych Góry Lodowej, tabela stanie się nieczytelna przez czytelników góry lodowej, w tym tę funkcję OneLake.

    Obejście:

    Jeśli musisz przenieść tabelę Góry Lodowej do innej lokalizacji, aby użyć tej funkcji, użyj narzędzia, które pierwotnie napisało tabelę Góry lodowej, aby napisać nową tabelę Góry Lodowej w żądanej lokalizacji.

  • Foldery tabel góry lodowej muszą zawierać tylko jeden zestaw plików metadanych

    Jeśli upuścisz i ponownie utworzysz tabelę Góry lodowej w snowflake, pliki metadanych nie są czyszczone. To zachowanie jest zgodne z projektem i wspiera funkcję UNDROP w Snowflake. Jednak ponieważ skrót wskazuje bezpośrednio folder i ten folder zawiera teraz wiele zestawów plików metadanych, nie możemy przekonwertować tabeli, dopóki nie usuniesz plików metadanych starej tabeli.

    Konwersja zakończy się niepowodzeniem, jeśli w folderze metadanych tabeli Iceberg znajduje się więcej niż jeden zestaw plików metadanych.

    Obejście:

    Aby upewnić się, że przekonwertowana tabela odzwierciedla poprawną wersję tabeli:

    • Upewnij się, że nie przechowujesz więcej niż jednej tabeli Góry lodowej w tym samym folderze.
    • Wyczyść dowolną zawartość folderu tabeli Góry lodowej po upuszczaniu go przed ponownym utworzeniem tabeli.
  • Zmiany metadanych nie zostały natychmiast odzwierciedlone

    Jeśli wprowadzisz zmiany metadanych w tabeli Góry lodowej, takie jak dodanie kolumny, usunięcie kolumny, zmiana nazwy kolumny lub zmiana typu kolumny, tabela może nie zostać przywrócona do momentu wprowadzenia zmiany danych, na przykład dodania wiersza danych.

    Pracujemy nad poprawką, która pobiera prawidłowy najnowszy plik metadanych zawierający najnowszą zmianę metadanych.

    Obejście:

    Po wprowadzeniu zmiany schematu w tabeli Góry lodowej dodaj wiersz danych lub wprowadź inne zmiany w danych. Po tej zmianie powinno być możliwe odświeżenie i wyświetlenie najnowszego widoku tabeli w usłudze Fabric.

  • Ograniczenie dostępności regionu

    Funkcja nie jest jeszcze dostępna w następujących regionach:

    • Katar Środkowy
    • Norwegia Zachodnia

    Obejście:

    Obszary robocze dołączone do pojemności sieci szkieletowej w innych regionach mogą używać tej funkcji. Zobacz pełną listę regionów, w których jest dostępna usługa Microsoft Fabric.

  • Łącza prywatne nie są obsługiwane

    Ta funkcja nie jest obecnie obsługiwana w przypadku dzierżaw ani obszarów roboczych z włączonymi linkami prywatnymi.

    Pracujemy nad ulepszeniem w celu usunięcia tego ograniczenia.

  • Skróty oneLake muszą być w tym samym regionie

    Mamy tymczasowe ograniczenie dotyczące korzystania z tej funkcji ze skrótami wskazującymi lokalizacje OneLake: lokalizacja docelowa skrótu musi znajdować się w tym samym regionie co sam skrót.

    Pracujemy nad ulepszeniem, aby usunąć to wymaganie.

    Obejście:

    Jeśli masz skrót OneLake do tabeli Góry Lodowej w innym jeziorze, upewnij się, że drugi jezioro jest skojarzone z pojemnością w tym samym regionie.

  • Niektóre typy przekształceń partycji systemu Iceberg nie są obsługiwane

    Obecnie typy partycji Iceberg, bucket[N], truncate[W], i void nie są obsługiwane.

    Jeśli przekonwertowana tabela Iceberg zawiera te typy przekształceń partycji, wirtualizacja w formacie usługi Delta Lake nie powiedzie się.

    Pracujemy nad ulepszeniem w celu usunięcia tego ograniczenia.