Używanie tabel góry lodowej z usługą OneLake
W usłudze Microsoft OneLake możesz tworzyć skróty do tabel Platformy Apache Iceberg, umożliwiając ich użycie w wielu różnych obciążeniach sieci szkieletowej. Ta funkcja jest możliwa dzięki funkcji nazywanej wirtualizacją metadanych, która umożliwia interpretowanie tabel góry lodowej jako tabel usługi Delta Lake z perspektywy skrótu. Podczas tworzenia skrótu do folderu tabeli Góry lodowej usługa OneLake automatycznie generuje odpowiednie metadane usługi Delta Lake (dziennik delta) dla tej tabeli, dzięki czemu metadane usługi Delta Lake będą dostępne za pomocą skrótu.
Ważne
Ta funkcja jest dostępna w wersji zapoznawczej.
Chociaż ten artykuł zawiera wskazówki dotyczące pisania tabel góry lodowej z snowflake do oneLake, ta funkcja jest przeznaczona do pracy z dowolnymi tabelami Góry Lodowej z plikami danych Parquet.
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.
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
W usłudze Fabric lakehouse utwórz nowy skrót w obszarze Tabele w nieobsługiwowanym schemacie lakehouse.
Uwaga
Jeśli zobaczysz schematy, takie jak
dbo
w folderze Tables usługi Lakehouse, usługa Lakehouse jest włączona w schemacie i nie jest jeszcze zgodna z tą funkcją.Aby uzyskać ścieżkę docelową skrótu, wybierz folder Tabela Góry lodowej. Folder tabeli Góry lodowej zawiera
metadata
foldery idata
.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.
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 .
Pisanie tabeli góry lodowej w onelake przy użyciu snowflake
Jeśli używasz usługi Snowflake na platformie Azure, możesz napisać tabele Góry lodowej w usłudze OneLake, wykonując następujące kroki:
Upewnij się, że pojemność sieci szkieletowej znajduje się w tej samej lokalizacji platformy Azure co wystąpienie usługi Snowflake.
Zidentyfikuj lokalizację pojemności sieci szkieletowej skojarzonej z usługą Fabric lakehouse. Otwórz ustawienia obszaru roboczego Sieć szkieletowa, który zawiera usługę Lakehouse.
W lewym dolnym rogu interfejsu konta usługi Snowflake na koncie platformy Azure sprawdź region świadczenia usługi Azure konta snowflake.
Jeśli te regiony są inne, musisz użyć innej pojemności sieci szkieletowej w tym samym regionie co konto usługi Snowflake.
Otwórz menu obszaru Pliki w usłudze Lakehouse, wybierz pozycję Właściwości i skopiuj adres URL (ścieżkę HTTPS) tego folderu.
Zidentyfikuj identyfikator dzierżawy sieci szkieletowej. Wybierz swój profil użytkownika w prawym górnym rogu interfejsu użytkownika sieci szkieletowej i umieść wskaźnik myszy na bąbelku informacji obok nazwy dzierżawy. Skopiuj identyfikator dzierżawy.
W aplikacji Snowflake skonfiguruj ścieżkę
EXTERNAL VOLUME
do folderu Files w twoim lakehouse. Więcej informacji na temat konfigurowania woluminów zewnętrznych snowflake można znaleźć tutaj.Uwaga
Snowflake wymaga, aby schemat adresu URL był
azure://
, więc pamiętaj, aby zmienić wartośćhttps://
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>' ) );
W tym przykładzie wszystkie tabele utworzone przy użyciu tego woluminu zewnętrznego są przechowywane w usłudze Fabric lakehouse w folderze
Files/icebergtables
.Po utworzeniu woluminu zewnętrznego uruchom następujące polecenie, aby pobrać adres URL zgody i nazwę aplikacji używanej przez usługę Snowflake do zapisu w usłudze OneLake. Ta aplikacja jest używana przez dowolny inny wolumin zewnętrzny na koncie snowflake.
DESC EXTERNAL VOLUME onelake_exvol;
Dane wyjściowe tego polecenia zwracają
AZURE_CONSENT_URL
właściwości iAZURE_MULTI_TENANT_APP_NAME
. Zanotuj obie wartości. Nazwa aplikacji wielodostępnych platformy Azure wygląda następująco<name>_<number>
: , ale wystarczy przechwycić<name>
tylko część.Otwórz adres URL zgody z poprzedniego kroku na nowej karcie przeglądarki. Jeśli chcesz kontynuować, wyrażasz zgodę na wymagane uprawnienia aplikacji, jeśli zostanie wyświetlony monit.
Wróć do obszaru szkieletowego, otwórz obszar roboczy i wybierz pozycję Zarządzaj dostępem, a następnie dodaj osoby lub grupy. Udziel aplikacji używanej przez wolumin zewnętrzny Snowflake uprawnienia wymagane do zapisywania danych w magazynach typu lakehouse w obszarze roboczym. Zalecamy przyznanie roli Współautor .
Wróć do snowflake, użyj nowego woluminu zewnętrznego, aby utworzyć tabelę Góry lodowej.
CREATE OR REPLACE ICEBERG TABLE MYDATABASE.PUBLIC.Inventory ( InventoryId int, ItemName STRING ) EXTERNAL_VOLUME = 'onelake_exvol' CATALOG = 'SNOWFLAKE' BASE_LOCATION = 'Inventory/';
Dzięki tej instrukcji nowy folder tabeli Iceberg o nazwie Inventory jest tworzony w ścieżce folderu zdefiniowanej w woluminie zewnętrznym.
Dodaj dane do tabeli Góry Lodowej.
INSERT INTO MYDATABASE.PUBLIC.Inventory VALUES (123456,'Amatriciana');
Na koniec w obszarze Tabele tego samego jeziora możesz utworzyć skrót OneLake do tabeli Góry Lodowej. Za pomocą tego skrótu tabela Iceberg jest wyświetlana jako tabela usługi Delta Lake do użycia w obciążeniach sieci szkieletowej.
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/
|-- 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
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.
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.
Ś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
idata
.
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
Problem z szerokością typu
Jeśli używasz usługi Snowflake do zapisania tabeli Iceberg, a tabela zawiera typy
INT64
kolumn ,double
lubDecimal
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 nafalse
wartość . 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.
Stoły góry lodowej muszą być głębsze niż poziom korzeni
Folder tabeli Iceberg w magazynie musi znajdować się w katalogu głębiej niż poziom zasobnika lub kontenera. Tabele góry lodowej przechowywane bezpośrednio w katalogu głównym zasobnika lub kontenera mogą nie być zwirtualizowane w formacie usługi Delta Lake.
Pracujemy nad ulepszeniem, aby usunąć to wymaganie.
Obejście:
Upewnij się, że wszystkie tabele góry lodowej są przechowywane w katalogu głębiej niż katalog główny zasobnika lub kontenera.
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 obsługiwane
UNDROP
przez funkcję w aplikacji 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.Obecnie próba konwersji jest podejmowana w tym scenariuszu, co może spowodować wyświetlenie starych informacji spisu i schematu w zwirtualizowanej tabeli usługi Delta Lake.
Pracujemy nad poprawką, w której konwersja koń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.
Obszary robocze z obsługą schematu nie są jeszcze obsługiwane
Jeśli utworzysz skrót z góry lodowej w jeziorze z obsługą schematu, konwersja nie wystąpi dla tego skrótu.
Pracujemy nad ulepszeniem w celu usunięcia tego ograniczenia.
Obejście:
Użyj usługi lakehouse z obsługą schematu z tą funkcją. To ustawienie można skonfigurować podczas tworzenia usługi Lakehouse.
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.
Ograniczenie rozmiaru tabeli
Mamy tymczasowe ograniczenie dotyczące rozmiaru tabeli Góry lodowej obsługiwanej przez tę funkcję. Maksymalna obsługiwana liczba plików danych Parquet wynosi około 5000 plików danych lub około 1 miliardów wierszy, w zależności od tego, co zostanie napotkane jako pierwsze.
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.
Powiązana zawartość
- Dowiedz się więcej na temat zabezpieczeń sieci szkieletowej i usługi OneLake.
- Dowiedz się więcej o skrótach OneLake.