Dela via


Arbeta med externa tabeller

Externa tabeller lagrar data i en katalog i molnobjektlagring i din molnklientorganisation. Du måste ange en lagringsplats när du definierar en extern tabell.

Databricks rekommenderar att du endast använder externa tabeller när du även behöver direkt åtkomst till data från icke-Databricks-klienter. Behörigheter för Unity-katalogen tillämpas inte när användare får åtkomst till datafiler från externa system.

Varning

Om du uppdaterar externa tabellmetadata med en icke-Databricks-klient eller använder sökvägsbaserad åtkomst inifrån Databricks synkroniseras inte metadata automatiskt med Unity Catalog. Databricks rekommenderar mot sådana metadatauppdateringar, men om du utför en sådan måste du köra MSCK REPAIR TABLE <table-name> SYNC METADATA för att uppdatera schemat i Unity Catalog. Se REPAIR TABLE.

Kommentar

Den här artikeln fokuserar på externa tabeller i Unity Catalog. Externa tabeller i det äldre Hive-metaarkivet har olika beteenden. Se Databasobjekt i det äldre Hive-metaarkivet.

Arbeta med externa tabeller

Azure Databricks hanterar endast metadata för externa tabeller och använder inte den hantera lagringsplats som är associerad med det innehållande schemat. Tabellregistreringen i Unity Catalog är bara en pekare till datafiler. När du släpper en extern tabell tas inte datafilerna bort.

När du skapar en extern tabell kan du antingen registrera en befintlig katalog med datafiler som en tabell eller ange en sökväg för att skapa nya datafiler.

Externa tabeller kan använda följande filformat:

  • DELTA
  • CSV
  • JSON
  • AVRO
  • PARKETTGOLV
  • ORCH
  • SMS

Skapa en extern tabell

Om du vill skapa en extern tabell kan du använda SQL-kommandon eller dataramsskrivningsåtgärder.

Innan du börjar

Om du vill skapa en extern tabell måste du uppfylla följande behörighetskrav:

  • Den CREATE EXTERNAL TABLE-behörighet som tilldelas på en extern plats och ger åtkomst till LOCATION som den externa tabellen använder.
  • Behörigheten USE SCHEMA i tabellens överordnade schema.
  • Behörigheten USE CATALOG i tabellens överordnade katalog.
  • Behörigheten CREATE TABLE i tabellens överordnade schema.

Mer information om hur du konfigurerar externa platser finns i Skapa en extern plats för att ansluta molnlagring till Azure Databricks.

SQL-kommandoexempel

Använd något av följande kommandoexempel i en notebook-fil eller SQL-frågeredigeraren för att skapa en extern tabell.

I följande exempel ersätter du platshållarvärdena:

  • <catalog>: Namnet på katalogen som ska innehålla tabellen.
  • <schema>: Namnet på schemat som ska innehålla tabellen.
  • <table-name>: Ett namn på tabellen.
  • <column-specification>: Namn och datatyp för varje kolumn.
  • <bucket-path>: Sökvägen till molnlagrings bucketen där tabellen ska skapas.
  • <table-directory>: En katalog där tabellen skapas. Använd en unik katalog för varje tabell.
CREATE TABLE <catalog>.<schema>.<table-name>
(
  <column-specification>
)
LOCATION 'abfss://<bucket-path>/<table-directory>';

Mer information om parametrar för att skapa tabeller finns i CREATE TABLE.

Skrivåtgärder för dataram

Många användare skapar externa tabeller från frågeresultat eller DataFrame-skrivåtgärder. Följande artiklar visar några av de många mönster som du kan använda för att skapa en extern tabell i Azure Databricks:

Ta bort en extern tabell

För att ta bort en tabell måste du vara dess ägare eller ha MANAGE-behörighet på tabellen. Om du vill släppa en extern tabell kör du följande SQL-kommando:

DROP TABLE IF EXISTS catalog_name.schema_name.table_name;

Unity Catalog tar inte bort underliggande data i molnlagringen när du släpper en extern tabell. Du måste ta bort de underliggande datafilerna direkt om du behöver ta bort data som är associerade med tabellen.

Exempelanteckningsbok: Skapa externa tabeller

Du kan använda följande notebook-exempel för att skapa en katalog, ett schema och en extern tabell och för att hantera behörigheter för dem.

Skapa och hantera en extern tabell i Notebook-filen för Unity Catalog

Hämta bärbar dator