Skapa tabeller i Unity Catalog
Den här artikeln beskriver begreppet hanterade och externa tabeller i Unity Catalog och beskriver hur du skapar tabeller i Unity Catalog.
Kommentar
När du skapar en tabell bör du referera till en katalog som styrs av Unity Catalog eller ange standardkatalogen till en katalog som styrs av Unity Catalog. Se Hantera standardkatalogen.
Katalogen hive_metastore
visas i Katalogutforskaren men anses inte styras av Unity Catalog. Det hanteras av Din Azure Databricks-arbetsytas Hive-metaarkiv. Alla andra kataloger som listas styrs av Unity Catalog.
Du kan använda unity catalog-tabelluppgraderingsgränssnittet för att uppgradera befintliga tabeller som är registrerade i Hive-metaarkivet till Unity Catalog. Se Uppgradera Hive-tabeller och vyer till Unity Catalog.
Hanterade tabeller
Hanterade tabeller är standardsättet för att skapa tabeller i Unity Catalog. Unity Catalog hanterar livscykeln och fillayouten för dessa tabeller. Du bör inte använda verktyg utanför Azure Databricks för att ändra filer i dessa tabeller direkt.
Hanterade tabeller lagras i hanterad lagring, antingen på metaarkiv-, katalog- eller schemanivå, beroende på hur schemat och katalogen konfigureras. Se Ange en hanterad lagringsplats i Unity Catalog.
Hanterade tabeller använder alltid deltatabellformatet .
När en hanterad tabell tas bort tas dess underliggande data bort från molnklientorganisationen inom 30 dagar.
Externa tabeller
Externa tabeller är tabeller vars data lagras utanför den hanterade lagringsplats som angetts för metaarkivet, katalogen eller schemat. Använd endast externa tabeller när du behöver direkt åtkomst till data utanför Azure Databricks-kluster eller Databricks SQL-lager.
När du kör DROP TABLE
på en extern tabell tar Unity Catalog inte bort underliggande data. Om du vill släppa en tabell måste du vara dess ägare. Du kan hantera behörigheter för externa tabeller och använda dem i frågor på samma sätt som hanterade tabeller. Om du vill skapa en extern tabell med SQL anger du en LOCATION
sökväg i - CREATE TABLE
instruktionen. Externa tabeller kan använda följande filformat:
- DELTA
- CSV
- JSON
- AVRO
- PARKETT
- ORC
- TEXT
Om du vill hantera åtkomsten till den underliggande molnlagringen för en extern tabell måste du konfigurera autentiseringsuppgifter för lagring och externa platser.
Mer information finns i Skapa en extern tabell.
Krav
Du måste ha behörigheten CREATE TABLE
för schemat där du vill skapa tabellen, samt behörigheten USE SCHEMA
för schemat och behörigheten USE CATALOG
i den överordnade katalogen.
Om du skapar en extern tabell kan du läsa Skapa en extern tabell för ytterligare krav.
Skapa en hanterad tabell
Kör följande SQL-kommando för att skapa en hanterad tabell. Du kan också använda notebook-exempelanteckningsboken för att skapa en tabell. Objekt inom hakparenteser är valfria. Ersätt platshållarvärdena:
<catalog-name>
: Namnet på katalogen som ska innehålla tabellen..Det kan inte vara katalogen
hive_metastore
som skapas automatiskt för Hive-metaarkivet som är associerat med din Azure Databricks-arbetsyta. Du kan släppa katalognamnet om du skapar tabellen i arbetsytans standardkatalog.<schema-name>
: Namnet på schemat som ska innehålla tabellen..<table-name>
: Ett namn på tabellen.<column-specification>
: Namn och datatyp för varje kolumn.
SQL
CREATE TABLE <catalog-name>.<schema-name>.<table-name>
(
<column-specification>
);
Python
spark.sql("CREATE TABLE <catalog-name>.<schema-name>.<table-name> "
"("
" <column-specification>"
")")
R
library(SparkR)
sql(paste("CREATE TABLE <catalog-name>.<schema-name>.<table-name> ",
"(",
" <column-specification>",
")",
sep = ""))
Scala
spark.sql("CREATE TABLE <catalog-name>.<schema-name>.<table-name> " +
"(" +
" <column-specification>" +
")")
Du kan också skapa en hanterad tabell med hjälp av Databricks Terraform-providern och databricks_table. Du kan hämta en lista med fullständiga tabellnamn med hjälp av databricks_tables.
Om du till exempel vill skapa tabellen main.default.department
och infoga fem rader i den:
SQL
CREATE TABLE main.default.department
(
deptcode INT,
deptname STRING,
location STRING
);
INSERT INTO main.default.department VALUES
(10, 'FINANCE', 'EDINBURGH'),
(20, 'SOFTWARE', 'PADDINGTON'),
(30, 'SALES', 'MAIDSTONE'),
(40, 'MARKETING', 'DARLINGTON'),
(50, 'ADMIN', 'BIRMINGHAM');
Python
spark.sql("CREATE TABLE main.default.department "
"("
" deptcode INT,"
" deptname STRING,"
" location STRING"
")"
"INSERT INTO main.default.department VALUES "
" (10, 'FINANCE', 'EDINBURGH'),"
" (20, 'SOFTWARE', 'PADDINGTON'),"
" (30, 'SALES', 'MAIDSTONE'),"
" (40, 'MARKETING', 'DARLINGTON'),"
" (50, 'ADMIN', 'BIRMINGHAM')")
R
library(SparkR)
sql(paste("CREATE TABLE main.default.department ",
"(",
" deptcode INT,",
" deptname STRING,",
" location STRING",
")",
"INSERT INTO main.default.department VALUES ",
" (10, 'FINANCE', 'EDINBURGH'),",
" (20, 'SOFTWARE', 'PADDINGTON'),",
" (30, 'SALES', 'MAIDSTONE'),",
" (40, 'MARKETING', 'DARLINGTON'),",
" (50, 'ADMIN', 'BIRMINGHAM')",
sep = ""))
Scala
spark.sql("CREATE TABLE main.default.department " +
"(" +
" deptcode INT," +
" deptname STRING," +
" location STRING" +
")" +
"INSERT INTO main.default.department VALUES " +
" (10, 'FINANCE', 'EDINBURGH')," +
" (20, 'SOFTWARE', 'PADDINGTON')," +
" (30, 'SALES', 'MAIDSTONE')," +
" (40, 'MARKETING', 'DARLINGTON')," +
" (50, 'ADMIN', 'BIRMINGHAM')")
Exempel på notebook-fil: Skapa hanterade tabeller
Du kan använda följande notebook-exempel för att skapa en katalog, ett schema och en hanterad tabell och för att hantera behörigheter för dem.
Skapa och hantera en tabell i Unity Catalog med hjälp av Python Notebook
Skapa och hantera en tabell i Unity Catalog med hjälp av SQL Notebook
Ta bort en hanterad tabell
Du måste vara tabellens ägare för att släppa en tabell. Om du vill släppa en hanterad tabell kör du följande SQL-kommando:
DROP TABLE IF EXISTS catalog_name.schema_name.table_name;
När en hanterad tabell tas bort tas dess underliggande data bort från molnklientorganisationen inom 30 dagar.
Skapa en extern tabell
Data i en extern tabell lagras i en sökväg i din molnklientorganisation. För att arbeta med externa tabeller introducerar Unity Catalog två objekt för åtkomst och arbete med extern molnlagring:
- En lagringsautentiseringsuppgift innehåller en autentiseringsmetod för åtkomst till en molnlagringsplats. Lagringsautentiseringsuppgifterna innehåller inte någon mappning till den sökväg som den ger åtkomst till. Lagringsautentiseringsuppgifterna är åtkomstkontrollerade för att avgöra vilka användare som kan använda autentiseringsuppgifterna.
- En extern plats mappar en lagringsautentiseringsuppgift med en molnlagringssökväg som den ger åtkomst till. Den externa platsen ger endast åtkomst till den molnlagringssökvägen och dess innehåll. Externa platser är åtkomststyrda för att avgöra vilka användare som kan använda dem. En extern plats används automatiskt när SQL-kommandot innehåller en
LOCATION
sats.
Krav
Om du vill skapa en extern tabell måste du ha:
- Behörigheten
CREATE EXTERNAL TABLE
på en extern plats som ger åtkomst till denLOCATION
som nås av den externa tabellen. - Behörigheten
USE SCHEMA
för tabellens överordnade schema. - Behörigheten
USE CATALOG
för tabellens överordnade katalog. - Behörigheten
CREATE TABLE
för tabellens överordnade schema.
Externa platser och autentiseringsuppgifter för lagring lagras på metaarkivnivå i stället för i en katalog. Om du vill skapa en lagringsautentiseringsuppgift måste du vara kontoadministratör eller ha behörigheten CREATE STORAGE CREDENTIAL
. Om du vill skapa en extern plats måste du vara metaarkivadministratör eller ha behörigheten CREATE EXTERNAL LOCATION
. Se Anslut till molnobjektlagring med hjälp av Unity Catalog.
Skapa en tabell
Använd något av följande kommandoexempel i en notebook-fil eller SQL-frågeredigeraren för att skapa en extern tabell.
Du kan också använda en exempelanteckningsbok för att skapa lagringsautentiseringsuppgifter, extern plats och extern tabell och även hantera behörigheter för dem.
I följande exempel ersätter du platshållarvärdena:
<catalog>
: Namnet på katalogen som ska innehålla tabellen.Det kan inte vara katalogen
hive_metastore
som skapas automatiskt för Hive-metaarkivet som är associerat med din Azure Databricks-arbetsyta. Du kan släppa katalognamnet om du skapar tabellen i arbetsytans standardkatalog.<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 ska skapas. Använd en unik katalog för varje tabell.
Viktigt!
När en tabell har skapats i en sökväg kan användarna inte längre komma åt filerna direkt i den sökvägen från Azure Databricks även om de har fått behörighet på en extern plats eller lagringsautentiseringsuppgifter för att göra det. Detta för att säkerställa att användarna inte kan kringgå åtkomstkontroller som tillämpas på tabeller genom att läsa filer direkt från din molnklientorganisation.
SQL
CREATE TABLE <catalog>.<schema>.<table-name>
(
<column-specification>
)
LOCATION 'abfss://<bucket-path>/<table-directory>';
Python
spark.sql("CREATE TABLE <catalog>.<schema>.<table-name> "
"("
" <column-specification>"
") "
"LOCATION 'abfss://<bucket-path>/<table-directory>'")
R
library(SparkR)
sql(paste("CREATE TABLE <catalog>.<schema>.<table-name> ",
"(",
" <column-specification>",
") ",
"LOCATION 'abfss://<bucket-path>/<table-directory>'",
sep = ""))
Scala
spark.sql("CREATE TABLE <catalog>.<schema>.<table-name> " +
"(" +
" <column-specification>" +
") " +
"LOCATION 'abfss://<bucket-path>/<table-directory>'")
Unity Catalog kontrollerar att du har följande behörigheter:
CREATE EXTERNAL TABLE
på den externa plats som refererar till den molnlagringssökväg som du anger.CREATE TABLE
i det överordnade schemat.USE SCHEMA
i det överordnade schemat.USE CATALOG
i den överordnade katalogen.
Om du gör det skapas den externa tabellen. Annars uppstår ett fel och den externa tabellen skapas inte.
Kommentar
Du kan i stället migrera en befintlig extern tabell i Hive-metaarkivet till Unity Catalog utan att duplicera dess data. Se Uppgradera en enda Hive-tabell till en extern Unity Catalog-tabell med hjälp av uppgraderingsguiden.
Du kan också skapa en extern tabell med hjälp av Databricks Terraform-providern och databricks_table. Du kan hämta en lista med fullständiga tabellnamn med hjälp av databricks_tables.
Exempel på notebook-fil: 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
Skapa en tabell från filer som lagras i din molnklientorganisation
Du kan fylla i en hanterad eller extern tabell med poster från filer som lagras i molnklientorganisationen. Unity Catalog läser filerna på den platsen och infogar innehållet i tabellen. I Unity Catalog kallas detta sökvägsbaserad åtkomst.
Du kan följa exemplen i det här avsnittet eller använda användargränssnittet för att lägga till data.
Utforska innehållet i filerna
Om du vill utforska data som lagras på en extern plats innan du skapar tabeller från dessa data kan du använda Catalog Explorer eller följande kommandon.
Behörigheter som krävs: Du måste ha behörigheten READ FILES
på den externa plats som är associerad med molnlagringssökvägen för att returnera en lista över datafiler på den platsen.
SQL
Visa en lista över filerna i en molnlagringssökväg:
LIST 'abfss://<path-to-files>';
Fråga efter data i filerna i en viss sökväg:
SELECT * FROM <format>.`abfss://<path-to-files>`;
Python
Visa en lista över filerna i en molnlagringssökväg:
display(spark.sql("LIST 'abfss://<path-to-files>'"))
Fråga efter data i filerna i en viss sökväg:
display(spark.read.load("abfss://<path-to-files>"))
R
Visa en lista över filerna i en molnlagringssökväg:
library(SparkR) display(sql("LIST 'abfss://<path-to-files>'"))
Fråga efter data i filerna i en viss sökväg:
library(SparkR) display(loadDF("abfss://<path-to-files>"))
Scala
Visa en lista över filerna i en molnlagringssökväg:
display(spark.sql("LIST 'abfss://<path-to-files>'"))
Fråga efter data i filerna i en viss sökväg:
display(spark.read.load("abfss://<path-to-files>"))
Skapa en tabell från filerna
Följ exemplen i det här avsnittet för att skapa en ny tabell och fylla den med datafiler i din molnklientorganisation.
Kommentar
Du kan i stället migrera en befintlig extern tabell i Hive-metaarkivet till Unity Catalog utan att duplicera dess data. Se Uppgradera en enda Hive-tabell till en extern Unity Catalog-tabell med hjälp av uppgraderingsguiden.
Viktigt!
- När du skapar en tabell med den här metoden skrivs lagringssökvägen bara en gång för att förhindra duplicering av poster. Om du vill läsa om innehållet i katalogen måste du släppa och återskapa tabellen. För en befintlig tabell kan du infoga poster från en lagringssökväg.
- Bucketsökvägen där du skapar en tabell kan inte heller användas för att läsa eller skriva datafiler.
- Endast filerna i den exakta katalogen är lästa. läsningen är inte rekursiv.
- Du måste ha följande behörigheter:
USE CATALOG
i den överordnade katalogen ochUSE SCHEMA
i schemat.CREATE TABLE
i det överordnade schemat.READ FILES
på den externa plats som är associerad med bucketsökvägen där filerna finns, eller direkt på lagringsautentiseringsuppgifterna om du inte använder en extern plats.- Om du skapar en extern tabell behöver
CREATE EXTERNAL TABLE
du på bucketsökvägen där tabellen ska skapas.
Om du vill skapa en ny hanterad tabell och fylla den med data i molnlagringen använder du följande exempel.
SQL
CREATE TABLE <catalog>.<schema>.<table-name>
(
<column-specification>
)
SELECT * from <format>.`abfss://<path-to-files>`;
Python
spark.sql("CREATE TABLE <catalog>.<schema>.<table-name> "
"( "
" <column-specification> "
") "
"SELECT * from <format>.`abfss://<path-to-files>`")
R
library(SparkR)
sql(paste("CREATE TABLE <catalog>.<schema>.<table-name> ",
"( ",
" <column-specification> ",
") ",
"SELECT * from <format>.`abfss://<path-to-files>`",
sep = ""))
Scala
spark.sql("CREATE TABLE <catalog>.<schema>.<table-name> " +
"( " +
" <column-specification> " +
") " +
"SELECT * from <format>.`abfss://<path-to-files>`")
Om du vill skapa en extern tabell och fylla den med data i molnlagringen lägger du till en LOCATION
sats:
SQL
CREATE TABLE <catalog>.<schema>.<table-name>
(
<column-specification>
)
USING <format>
LOCATION 'abfss://<table-location>'
SELECT * from <format>.`abfss://<path-to-files>`;
Python
spark.sql("CREATE TABLE <catalog>.<schema>.<table-name> "
"( "
" <column-specification> "
") "
"USING <format> "
"LOCATION 'abfss://<table-location>' "
"SELECT * from <format>.`abfss://<path-to-files>`")
R
library(SparkR)
sql(paste("CREATE TABLE <catalog>.<schema>.<table-name> ",
"( ",
" <column-specification> ",
") ",
"USING <format> ",
"LOCATION 'abfss://<table-location>' ",
"SELECT * from <format>.`abfss://<path-to-files>`",
sep = ""))
Scala
spark.sql("CREATE TABLE <catalog>.<schema>.<table-name> " +
"( " +
" <column-specification> " +
") " +
"USING <format> " +
"LOCATION 'abfss://<table-location>' " +
"SELECT * from <format>.`abfss://<path-to-files>`")
Infoga poster från en sökväg i en befintlig tabell
Om du vill infoga poster från en bucketsökväg i en befintlig tabell använder du COPY INTO
kommandot . I följande exempel ersätter du platshållarvärdena:
<catalog>
: Namnet på tabellens överordnade katalog.<schema>
: Namnet på tabellens överordnade schema.<path-to-files>
: Bucketsökvägen som innehåller datafilerna.<format>
: Formatet på filerna, till exempeldelta
.<table-location>
: Bucketsökvägen där tabellen ska skapas.
Viktigt!
- När du infogar poster i en tabell med den här metoden är bucketsökvägen du anger skrivskyddad en gång för att förhindra duplicering av poster.
- Bucketsökvägen där du skapar en tabell kan inte heller användas för att läsa eller skriva datafiler.
- Endast filerna i den exakta katalogen är lästa. läsningen är inte rekursiv.
- Du måste ha följande behörigheter:
USE CATALOG
i den överordnade katalogen ochUSE SCHEMA
i schemat.MODIFY
på tabellen.READ FILES
på den externa plats som är associerad med bucketsökvägen där filerna finns, eller direkt på lagringsautentiseringsuppgifterna om du inte använder en extern plats.- Om du vill infoga poster i en extern tabell behöver
CREATE EXTERNAL TABLE
du på bucketsökvägen där tabellen finns.
Om du vill infoga poster från filer i en bucketsökväg i en hanterad tabell använder du en extern plats för att läsa från bucketsökvägen:
SQL
COPY INTO <catalog>.<schema>.<table>
FROM (
SELECT *
FROM 'abfss://<path-to-files>'
)
FILEFORMAT = <format>;
Python
spark.sql("COPY INTO <catalog>.<schema>.<table> "
"FROM ( "
" SELECT * "
" FROM 'abfss://<path-to-files>' "
") "
"FILEFORMAT = <format>")
R
library(SparkR)
sql(paste("COPY INTO <catalog>.<schema>.<table> ",
"FROM ( ",
" SELECT * ",
" FROM 'abfss://<path-to-files>' ",
") ",
"FILEFORMAT = <format>",
sep = ""))
Scala
spark.sql("COPY INTO <catalog>.<schema>.<table> " +
"FROM ( " +
" SELECT * " +
" FROM 'abfss://<path-to-files>' " +
") " +
"FILEFORMAT = <format>")
Om du vill infoga i en extern tabell lägger du till en LOCATION
sats:
SQL
COPY INTO <catalog>.<schema>.<table>
LOCATION 'abfss://<table-location>'
FROM (
SELECT *
FROM 'abfss://<path-to-files>'
)
FILEFORMAT = <format>;
Python
spark.sql("COPY INTO <catalog>.<schema>.<table> "
"LOCATION 'abfss://<table-location>' "
"FROM ( "
" SELECT * "
" FROM 'abfss://<path-to-files>' "
") "
"FILEFORMAT = <format>")
R
library(SparkR)
sql(paste("COPY INTO <catalog>.<schema>.<table> ",
"LOCATION 'abfss://<table-location>' ",
"FROM ( ",
" SELECT * ",
" FROM 'abfss://<path-to-files>' ",
") ",
"FILEFORMAT = <format>",
sep = ""))
Scala
spark.sql("COPY INTO <catalog>.<schema>.<table> " +
"LOCATION 'abfss://<table-location>' " +
"FROM ( " +
" SELECT * " +
" FROM 'abfss://<path-to-files>' " +
") " +
"FILEFORMAT = <format>")
Lägga till kommentarer i en tabell
Som tabellägare eller användare med behörigheten MODIFY
i en tabell kan du lägga till kommentarer i en tabell och dess kolumner. Du kan lägga till kommentarer med hjälp av följande funktioner:
- KOMMANDOT KOMMENTERA. Det här alternativet stöder inte kolumnkommentare.
- Alternativet
COMMENT
när du använder kommandona CREATE TABLE och ALTER TABLE . Det här alternativet stöder kolumnkommentare. - Fältet "manuell" kommentar i Katalogutforskaren. Det här alternativet stöder kolumnkommentare. Se Dokumentdata i Katalogutforskaren med markdown-kommentarer.
- AI-genererade kommentarer (kallas även AI-genererad dokumentation) i Catalog Explorer. Du kan visa en kommentar som föreslås av en stor språkmodell (LLM) som tar hänsyn till tabellmetadata, till exempel tabellschemat och kolumnnamnen, och redigera eller acceptera kommentaren som den är för att lägga till den. Se Lägga till AI-genererade kommentarer i en tabell.
Nästa steg
Feedback
https://aka.ms/ContentUserFeedback.
Kommer snart: Under hela 2024 kommer vi att fasa ut GitHub-problem som feedbackmekanism för innehåll och ersätta det med ett nytt feedbacksystem. Mer information finns i:Skicka och visa feedback för