Sdílet prostřednictvím


Práce s externími tabulkami

V katalogu Unity externí tabulka ukládá datové soubory v cloudovém úložišti objektů v rámci vašeho cloudového tenanta. Katalog Unity nadále spravuje metadata tabulky a zajišťuje úplné řízení dat napříč všemi dotazy. Nespravuje ale životní cyklus, optimalizaci, umístění úložiště ani rozložení dat.

Když definujete externí tabulku katalogu Unity, musíte zadat umístění úložiště. Toto umístění je externí umístění zaregistrované v katalogu Unity. Když odstraníte externí tabulku, Katalog Unity odebere metadata tabulky, ale neodstraní podkladové datové soubory.

Tento článek se zaměřuje na externí tabulky katalogu Unity. Externí tabulky ve starším metastoru Hive mají různá chování. Viz Databázové objekty ve starší verzi Hive metastore.

Kdy použít externí tabulky

Databricks doporučuje používat externí tabulky pro následující případy použití:

  • Potřebujete zaregistrovat tabulku podporovanou existujícími daty, která nejsou kompatibilní se spravovanými tabulkami Unity Catalogu.
  • Potřebujete také přímý přístup k datům z klientů, kteří nejsou klienti Databricks, kteří nepodporují jiné vzory externího přístupu. Oprávnění katalogu Unity se nevynucují, když uživatelé přistupují k datovým souborům z externích systémů. Viz Přístup k datům Databricks pomocí externích systémů.

Ve většině případů databricks doporučuje používat spravované tabulky Unity Catalog k využití automatické optimalizace tabulek, rychlejšího výkonu dotazů a snížení nákladů. Pokud chcete migrovat externí tabulky do spravovaných tabulek, přečtěte si téma Převod externí tabulky na spravovanou tabulku katalogu Unity.

Důležité

Pokud aktualizujete metadata externí tabulky pomocí klienta jiného než Databricks nebo pomocí přístupu založeného na cestě v Databricks, tato metadata se automaticky nesynchronizují se stavem v Unity Catalog. Databricks nedoporučuje tyto aktualizace metadat, ale pokud je přesto provedete, musíte spustit MSCK REPAIR TABLE <table-name> SYNC METADATA, aby bylo schéma v katalogu Unity aktuální. Viz REPAIR TABLE.

Formáty souborů pro externí tabulky

Externí tabulky můžou používat následující formáty souborů:

  • DELTA
  • formát CSV
  • JSON
  • AVRO
  • PARKETY
  • OCR (Optické rozpoznávání znaků)
  • TEXT

Vytvoření externí tabulky

Externí tabulky můžete vytvářet pomocí příkazů SQL nebo operací zápisu do datového rámce.

Než začnete

Než vytvoříte externí tabulku, musíte nejprve nakonfigurovat externí umístění, které uděluje přístup ke cloudovému úložišti.

Další informace o konfiguraci externích umístění najdete v tématu Vytvoření externího umístění pro připojení cloudového úložiště k Azure Databricks.

Pokud chcete vytvořit externí tabulku, musíte splňovat následující požadavky na oprávnění:

  • Oprávnění CREATE EXTERNAL TABLE pro externí umístění, které uděluje přístup k LOCATION, k němuž přistupuje externí tabulka.
  • Oprávnění USE CATALOG k katalogu nadřazenému tabulce.
  • Oprávnění USE SCHEMA nadřazeného schématu tabulky.
  • Oprávnění CREATE TABLE nadřazeného schématu tabulky.

Poznámka:

Pokud je externí umístění S3 přidružené k více metastorům, vyhněte se udělení přístupu k zápisu do tabulek, které používají toto umístění S3, protože zápisy z různých metastorů do stejné externí tabulky můžou způsobit problémy s konzistencí. Čtení ze stejného externího umístění S3 ve více metastorech je však bezpečné.

Příklady příkazů SQL

K vytvoření externí tabulky použijte jeden z následujících příkladů příkazů v poznámkovém bloku nebo editoru dotazů SQL.

V následujících příkladech nahraďte zástupné hodnoty:

  • <catalog>: Název katalogu, který bude obsahovat tabulku.
  • <schema>: Název schématu, které bude obsahovat tabulku.
  • <table-name>: Název tabulky.
  • <column-specification>: Název a datový typ pro každý sloupec.
  • <bucket-path>: Cesta k kontejneru cloudového úložiště, kde se vytvoří tabulka.
  • <table-directory>: Adresář, ve kterém se vytvoří tabulka. Pro každou tabulku použijte jedinečný adresář.

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>';

Další informace o parametrech vytvoření tabulky najdete v tématu CREATE TABLE.

Operace zápisu do datového rámce

Můžete také vytvořit externí tabulky z výsledků dotazu nebo operací zápisu do datového rámce. Klauzule LOCATION slouží k určení cesty k externímu úložišti při vytváření tabulek pomocí datových rámců.

Následující možnosti syntaxe SQL fungují s operacemi datového rámce:

Odstranění externí tabulky

Pokud chcete tabulku odstranit, musíte být jejím vlastníkem nebo mít u tabulky oprávnění MANAGE. Pokud chcete vložit externí tabulku, spusťte následující příkaz SQL:

DROP TABLE IF EXISTS catalog_name.schema_name.table_name;

Při vyřazení externí tabulky katalog Unity neodstraní podkladová data v cloudovém úložišti. Pokud potřebujete odebrat data přidružená k tabulce, musíte přímo odstranit podkladové datové soubory.

ukázkový poznámkový blok: Vytvoření externích tabulek

Následující ukázkový poznámkový blok můžete použít k vytvoření katalogu, schématu a externí tabulky a ke správě oprávnění k nim.

Vytvoření a správa externí tabulky v poznámkovém bloku katalogu Unity

Pořiďte si poznámkový blok