Udostępnij przez


Konwertowanie tabeli obcej na zarządzaną tabelę Unity Catalog

Ważne

Ta funkcja jest dostępna w publicznej wersji zapoznawczej i jest obecnie dostępna tylko dla uczestniczących klientów. Aby wziąć udział w wersji zapoznawczej, aplikuj, wypełniając ten formularz. Ta funkcja obsługuje tylko konwertowanie obcych tabel zfederowanych przy użyciu HMS i Glue Federation.

Na tej stronie opisano sposób konwertowania SET MANAGED tabeli obcej na zarządzaną tabelę.

SET MANAGED omówienie

Użyj funkcji SET MANAGED, aby przekonwertować tabelę zewnętrzną na tabelę zarządzaną Unity Catalog w usłudze Azure Databricks. SET MANAGED oferuje następujące korzyści:

  • Zachowywanie historii tabel.
  • Przechowywanie tych samych konfiguracji tabeli, w tym takich samych nazw, ustawień, uprawnień i widoków.
  • Korzystanie z optymalizacji predykcyjnej. Podczas konwertowania tabeli na zarządzaną, optymalizacja predykcyjna jest ustawiona na wartość INHERIT, co oznacza, że dziedziczy ustawienie z poziomu schematu lub wykazu. Domyślnie jest to obecnie wyłączone. Optymalizację predykcyjną w przekonwertowanej tabeli można włączyć, uruchamiając ALTER TABLE <table_name> ENABLE PREDICTIVE OPTIMIZATION, co ustawia ją na ENABLED zamiast na INHERIT.

Wymagania wstępne

  • Format danych: format danych obcej tabeli musi być w formacie Delta Lake. Aby wykonać jednorazową konwersję dla Parquet, zobacz Konwertowanie na Delta Lake.
  • Typ tabeli: Tabela HMS musi być tabelą zewnętrzną HMS. Polecenie kończy się niepowodzeniem, jeśli tabela jest zarządzaną tabelą HMS.
  • Środowisko uruchomieniowe: Środowisko uruchomieniowe usługi Databricks Runtime w wersji 17.3 lub nowszej
  • Uprawnienia: uprawnienia OWNER lub MANAGE do tabeli oraz uprawnienia CREATE do EXTERNAL LOCATION

Składnia

Aby przekonwertować tabelę obcą Unity Catalog na zarządzaną przez Unity Catalog, uruchom następujące polecenie:

ALTER TABLE source_table SET MANAGED {MOVE | COPY}

Parametry

  • source_table

    Istniejąca tabela zewnętrzna w katalogu Unity. Tabele obce zawierają dane i metadane zarządzane przez wykaz zewnętrzny. Przed konwersją, jeśli usuwasz tabelę źródłową w zewnętrznym katalogu, tabela zewnętrzna również zostanie usunięta w Unity Catalog. Po przekonwertowaniu tabeli na zarządzaną, usunięcie tabeli źródłowej w zewnętrznym katalogu nie ma wpływu na zarządzaną tabelę w Unity Catalog.

  • MOVE

    Konwertuje tabelę na zarządzaną i wyłącza dostęp do tabeli źródłowej w wykazie zewnętrznym.

    • Dostęp za pośrednictwem zewnętrznego katalogu lub dostępu ścieżkowego kończy się niepowodzeniem po przekonwertowaniu tabeli. Wszyscy czytniki i pisarze tabeli muszą używać przestrzeni nazw Unity Catalog w celu uzyskania dostępu.

    • Wszyscy czytelnicy i autorzy muszą używać dostępu opartego na nazwach. Przykład:

      SELECT * FROM catalog_name.schema_name.table_name;
      
    • Dostęp oparty na ścieżkach nie jest obsługiwany i kończy się niepowodzeniem po przekonwertowaniu tabeli. Przykład:

      SELECT * FROM delta.`protocol://path/to/table`;
      
    • Zewnętrzni klienci (spoza usługi Azure Databricks) muszą obsługiwać odczyt tabel zarządzanych przez Unity Catalog. Zobacz Tryb zgodności.

    • Użyj pulpitu nawigacyjnego Access Insights, aby sprawdzić, czy czytelnicy i autorzy uzyskujący dostęp do tabel, to Databricks Runtime czy zewnętrzni klienci spoza usługi Azure Databricks.

    • Czytelnicy i autorzy usługi Azure Databricks muszą używać środowiska Databricks Runtime 15.4 LTS lub nowszego. Jeśli czytelnicy lub autorzy używają środowiska Databricks Runtime 14.3 LTS lub starszego, zobacz Opcję alternatywna dla czytelników i pisarzy w środowisku Databricks Runtime 14.3 LTS lub nowszym.

    • Przestój może wystąpić, gdy czytelnicy lub autorzy uzyskują dostęp do tabeli podczas konwersji. Aby uzyskać więcej informacji, zobacz jak skonwertować tabelę zewnętrzną na zarządzaną tabelę Unity Catalog.

    • Jeśli polecenie zostanie przerwane, tabela może pozostać jako tabela zewnętrzna, ponieważ konwersja na tabelę zarządzaną była niekompletna. Aby ukończyć polecenie, uruchom ponownie SET MANAGED na tabeli zewnętrznej.

    • Optymalizacja predykcyjna jest ustawiona na INHERIT , chyba że została ręcznie skonfigurowana. Aby sprawdzić, czy optymalizacja predykcyjna jest włączona, zobacz Sprawdzanie, czy optymalizacja predykcyjna jest włączona.

    • Cofanie: Aby cofnąć migrację tabeli i odzyskać dostęp do tabeli źródłowej w wykazie zewnętrznym, uruchom polecenie UNSET MANAGED. Tabela staje się tabelą zewnętrzną po uruchomieniu polecenia . Aby przywrócić tabelę do tabeli obcej, usuń tabelę, a w następnej synchronizacji katalogu zostanie ona znów sfederowana jako obca.

      ALTER TABLE catalog.schema.my_managed_table UNSET MANAGED
      

      Ostrzeżenie

      Przed usunięciem tabeli należy uruchomić polecenie UNSET MANAGED . Usunięcie tabeli bez wcześniejszego uruchomienia UNSET MANAGED może pozostawić system w złym stanie i może spowodować utratę lub niespójności danych.

    • Podczas wycofywania, zatwierdzenia, których dokonałeś w lokalizacji zewnętrznej między konwersją a wycofaniem, można przemieszczać w czasie według wersji, ale nie według znacznika czasowego. Siedem dni po wycofaniu dane w lokalizacji zarządzanej zostaną usunięte. W przypadku czytelników i pisarzy w środowisku Databricks Runtime 15.4 LTS lub nowszym historia tabeli dla zatwierdzeń dokonanych po konwersji, ale przed wycofaniem jest przenoszona w czasie według wersji, ale nie według znacznika czasu.

    • Po konwersji tabeli należy wykonać następujące czynności:

      • Uruchom ponownie wszystkie zadania przesyłania strumieniowego (odczyt lub zapis) przy użyciu tabeli obcej
      • Upewnij się, że czytelnicy i autorzy pracują z zarządzaną tabelą.
  • COPY

    Konwertuje tabelę na zarządzaną bez modyfikowania lub wyłączania dostępu do tabeli źródłowej w wykazie zewnętrznym.

    • Podczas konwersji na zarządzaną dane z tabeli źródłowej są kopiowane do zarządzanej lokalizacji magazynu zdefiniowanej dla tabeli obcej, tworząc dwie oddzielne kopie: nową tabelę zarządzaną i tabelę źródłową w wykazie zewnętrznym.
    • W przeciwieństwie do MOVE, gdzie operacje odczytu i zapisu kończą się niepowodzeniem, przy użyciu COPY jesteś odpowiedzialny za prawidłowe wyłączenie operacji odczytu i zapisu w tabeli źródłowej w katalogu zewnętrznym oraz upewnienie się, że obciążenia zostały przeniesione do nowego katalogu.
    • Rollback: Aby wycofać migrację tabeli, nie trzeba uruchamiać UNSET MANAGED polecenia, ponieważ tabela źródłowa nie została zakłócona w wykazie zewnętrznym. Usuń tabelę i zostanie ona ponownie sfederona jako zagraniczna w następnej synchronizacji wykazu.

Sprawdzanie konwersji

Możesz potwierdzić, że tabela zewnętrzna została przekonwertowana na zarządzaną tabelę:

DESCRIBE EXTENDED catalog_name.schema_name.table_name

Jeśli tabela została przekonwertowana, Type pod col_name wyświetla się jako MANAGED pod data_type.

Znane ograniczenia

Konwertowanie tabel obcych na tabele zarządzane ma następujące ograniczenia:

  • Klienci przesyłania strumieniowego: po konwersji należy ponownie uruchomić wszystkie zadania przesyłania strumieniowego.

  • Wiele regionów chmury: Jeśli domyślna lokalizacja zarządzana metastore katalogu Unity Catalog, katalogu lub schematu znajduje się w innym regionie chmury niż lokalizacja przechowywania tabeli obcej, którą konwertujesz, możesz ponieść dodatkowe koszty transferu danych między regionami. Dostawca usług w chmurze nakłada te opłaty poza kontrolą usługi Azure Databricks. Aby sprawdzić lokalizacje schematu, katalogu i magazynu metadanych, użyj następujących poleceń:

    -- Check schema location
    DESCRIBE SCHEMA EXTENDED catalog_name.schema_name;
    
    -- Check catalog location
    DESCRIBE CATALOG EXTENDED catalog_name;
    
    -- Check metastore location
    DESCRIBE METASTORE;
    

Często zadawane pytania

Czy można tworzyć tabele, a także konwertować tabele w wykazie obcym?

Tak, można tworzyć tabele zewnętrzne lub zarządzane w wykazie obcym. Zachowanie zależy od konfiguracji schematu:

  • W przypadku schematów Glue lub eHMS albo schematów z lokalizacją zarządzaną ustawioną w Unity Catalog: jeśli uruchomisz CREATE TABLE foreign_catalog.schema.table, co spowoduje utworzenie tabeli zarządzanej lub zewnętrznej w Unity Catalog. Tabela nie jest przekazywana ani synchronizowana z katalogiem zewnętrznym.
  • W przypadku schematów z wewnętrznych połączeń magazynu metadanych Hive: jeśli spróbujesz utworzyć tabelę w obcym schemacie, nadal zostanie utworzona tabela obca, a także tabela w hive_metastore.
  • W przypadku starszego magazynu metadanych Hive obszaru roboczego: Ponieważ jest to federacja odczytu i zapisu, jeśli utworzysz tabelę w zewnętrznym katalogu, zostanie również utworzona tabela w wewnętrznym magazynie metadanych Hive.

Co zrobić, jeśli moje obce tabele są oparte na systemie plików DBFS?

Podczas konwertowania tablicy opartej na DBFS przechowujemy bieżące mapowanie ścieżki DBFS na ścieżkę chmurową jako lokalizację ścieżki chmurowej tabeli zewnętrznej.

Czy mogę dokonać konwersji na poziomie schematu lub wykazu?

Możesz iterować tabele w schematach, aby konwertować pojedynczo, lub użyć projektu discoverx labs do konwertowania całych schematów lub katalogów jednocześnie:

df = (dx.from_tables("prod.*.*")
.with_sql("ALTER TABLE {full_table_name} SET MANAGED;")
.apply())