Udostępnij przez


Praca z tabelami zewnętrznymi

W wykazie aparatu Unity zewnętrzna tabela przechowuje pliki danych w magazynie obiektów w chmurze w dzierżawie chmury. Wykaz aparatu Unity nadal zarządza metadanymi tabeli, zapewniając pełny nadzór nad danymi we wszystkich zapytaniach. Nie zarządza jednak cyklem życia, optymalizacją, lokalizacją magazynu ani układem danych.

Podczas definiowania tabeli zewnętrznej wykazu aparatu Unity należy określić lokalizację przechowywania. Ta lokalizacja jest lokalizacją zewnętrzną zarejestrowaną w katalogu aparatu Unity. Po usunięciu tabeli zewnętrznej wykaz aparatu Unity usuwa metadane tabeli, ale nie usuwa źródłowych plików danych.

Ten artykuł koncentruje się na zewnętrznych tabelach Unity Catalog. Tabele zewnętrzne w starszym magazynie metadanych Hive mają różne zachowania. Zobacz Obiekty bazy danych w starszym magazynie metadanych Hive.

Kiedy należy używać tabel zewnętrznych

Usługa Databricks zaleca używanie tabel zewnętrznych w następujących przypadkach użycia:

  • Musisz zarejestrować tabelę opartą na istniejących danych, które nie są zgodne z tabelami zarządzanymi przez katalog Unity.
  • Wymagany jest również bezpośredni dostęp do danych od klientów spoza usługi Databricks, którzy nie obsługują innych wzorców dostępu zewnętrznego. Uprawnienia katalogu Unity nie są wymuszane, gdy użytkownicy uzyskują dostęp do plików danych z systemów zewnętrznych. Zobacz Uzyskiwanie dostępu do danych usługi Databricks przy użyciu systemów zewnętrznych.

W większości przypadków usługa Databricks zaleca korzystanie z tabel zarządzanych przez wykaz aparatu Unity w celu korzystania z automatycznej optymalizacji tabel, szybszej wydajności zapytań i obniżenia kosztów. Aby przeprowadzić migrację tabel zewnętrznych do zarządzanych tabel, zobacz Konwertowanie tabeli zewnętrznej na tabelę wykazu zarządzanego aparatu Unity.

Ważne

W przypadku aktualizacji metadanych tabeli zewnętrznej przy użyciu klienta innego niż Databricks lub dostępu opartego na ścieżkach z poziomu Databricks, te metadane nie są automatycznie synchronizowane ze stanem w Unity Catalog. Usługa Databricks odradza wykonywanie takich aktualizacji metadanych, ale jeżeli je wykonasz, trzeba uruchomić MSCK REPAIR TABLE <table-name> SYNC METADATA, aby zaktualizować schemat w Unity Catalog. Zobacz REPAIR TABLE.

Formaty plików dla tabel zewnętrznych

Tabele zewnętrzne mogą używać następujących formatów plików:

  • DELTA
  • CSV
  • JSON
  • AVRO
  • PARKIET
  • ORK
  • TEKST

Tworzenie tabeli zewnętrznej

Tabele zewnętrzne można tworzyć przy użyciu poleceń SQL lub operacji zapisu ramki danych.

Przed rozpoczęciem

Przed utworzeniem tabeli zewnętrznej należy najpierw skonfigurować lokalizację zewnętrzną, która udziela dostępu do magazynu w chmurze.

Aby uzyskać więcej informacji na temat konfigurowania lokalizacji zewnętrznych, zobacz Tworzenie lokalizacji zewnętrznej w celu połączenia magazynu w chmurze z usługą Azure Databricks.

Aby utworzyć tabelę zewnętrzną, musisz spełnić następujące wymagania dotyczące uprawnień:

  • Uprawnienie CREATE EXTERNAL TABLE w lokalizacji zewnętrznej, które umożliwia dostęp do LOCATION przez tabelę zewnętrzną.
  • Uprawnienie USE CATALOG do katalogu nadrzędnego tabeli.
  • Uprawnienie USE SCHEMA w schemacie nadrzędnym tabeli.
  • Uprawnienie CREATE TABLE w schemacie nadrzędnym tabeli.

Uwaga / Notatka

Jeśli lokalizacja zewnętrzna S3 jest skojarzona z wieloma magazynami metadanych, unikaj udzielania dostępu do zapisu do tabel korzystających z tej lokalizacji S3, ponieważ zapisy z różnych magazynów metadanych do tej samej tabeli zewnętrznej mogą powodować problemy ze spójnością. Jednak odczyt z tej samej lokalizacji zewnętrznej S3 w wielu magazynach metadanych jest bezpieczny.

Przykłady poleceń SQL

Użyj jednego z poniższych przykładów poleceń w notesie lub edytorze zapytań SQL, aby utworzyć tabelę zewnętrzną.

W poniższych przykładach zastąp wartości symboli zastępczych:

  • <catalog>: nazwa wykazu, który będzie zawierać tabelę.
  • <schema>: nazwa schematu, który będzie zawierać tabelę.
  • <table-name>: nazwa tabeli.
  • <column-specification>: nazwa i typ danych dla każdej kolumny.
  • <bucket-path>: Ścieżka do kubełka w chmurze, gdzie zostanie utworzona tabela.
  • <table-directory>: katalog, w którym zostanie utworzona tabela. Użyj unikatowego katalogu dla każdej tabeli.

ADLS

CREATE TABLE <catalog>.<schema>.<table-name>
(
  <column-specification>
)
LOCATION 'abfss://<bucket-path>/<table-directory>';

S3

CREATE TABLE <catalog>.<schema>.<table-name>
(
  <column-specification>
)
LOCATION 's3://<bucket-path>/<table-directory>';

Aby uzyskać więcej informacji na temat parametrów tworzenia tabeli, zobacz CREATE TABLE.

Operacje zapisu ramki danych

Tabele zewnętrzne można również tworzyć na podstawie wyników zapytania lub operacji zapisu ramki danych. Użyj klauzuli LOCATION , aby określić zewnętrzną ścieżkę magazynu podczas tworzenia tabel z ramkami danych.

Następujące opcje składni SQL działają z operacjami ramki danych:

Usuwanie tabeli zewnętrznej

Aby usunąć tabelę, musisz być jej właścicielem lub mieć uprawnienia MANAGE na tabeli. Aby usunąć tabelę zewnętrzną, uruchom następujące polecenie SQL:

DROP TABLE IF EXISTS catalog_name.schema_name.table_name;

Katalog Unity nie usuwa danych w przechowywaniu danych w chmurze podczas usuwania tabeli zewnętrznej. Jeśli chcesz usunąć dane skojarzone z tabelą, musisz bezpośrednio usunąć pliki danych bazowych.

Przykładowy notebook: tworzenie tabel zewnętrznych

W poniższym przykładowym notesie można utworzyć wykaz, schemat i tabelę zewnętrzną oraz zarządzać uprawnieniami.

Tworzenie i zarządzanie tabelą zewnętrzną w notebooku Unity Catalog

Pobierz notes