Vytváření tabulek v katalogu Unity
Tento článek představuje koncept spravovaných a externích tabulek v katalogu Unity a popisuje, jak vytvářet tabulky v katalogu Unity.
Poznámka:
Při vytváření tabulky nezapomeňte odkazovat na katalog, který se řídí katalogem Unity, nebo nastavit výchozí katalog na katalog, který se řídí katalogem Unity. Viz Správa výchozího katalogu.
Katalog hive_metastore
se zobrazí v Průzkumníku katalogu, ale není považován za řízený katalogem Unity. Spravuje ho metastore Hive vašeho pracovního prostoru Azure Databricks. Všechny ostatní uvedené katalogy se řídí katalogem Unity.
K upgradu existujících tabulek zaregistrovaných v metastoru Hive na Katalog Unity můžete použít rozhraní upgradu tabulky Katalogu Unity. Viz Upgrade tabulek a zobrazení Hive na katalog Unity.
Spravované tabulky
Spravované tabulky představují výchozí způsob vytváření tabulek v katalogu Unity. Katalog Unity spravuje životní cyklus a rozložení souborů pro tyto tabulky. K přímé manipulaci se soubory v těchto tabulkách byste neměli používat nástroje mimo Azure Databricks.
Spravované tabulky se ukládají ve spravovaném úložišti, a to buď na úrovni metastoru, katalogu nebo schématu, v závislosti na konfiguraci schématu a katalogu. Viz Určení spravovaného umístění úložiště v katalogu Unity.
Spravované tabulky vždy používají formát tabulky Delta .
Když dojde k vyřazení spravované tabulky, její podkladová data se ze svého cloudového tenanta odstraní do 30 dnů.
Externí tabulky
Externí tabulky jsou tabulky, jejichž data jsou uložená mimo umístění spravovaného úložiště určeného pro metastor, katalog nebo schéma. Externí tabulky používejte jenom v případech, kdy potřebujete přímý přístup k datům mimo clustery Azure Databricks nebo datové sklady SQL Databricks.
Při spuštění DROP TABLE
na externí tabulce katalog Unity neodstraní podkladová data. Pokud chcete tabulku odstranit, musíte být jejím vlastníkem. Oprávnění k externím tabulkám můžete spravovat a používat je v dotazech stejným způsobem jako spravované tabulky. Pokud chcete vytvořit externí tabulku s SQL, zadejte LOCATION
v CREATE TABLE
příkazu cestu. Externí tabulky můžou používat následující formáty souborů:
- DELTA
- CSV
- JSON
- AVRO
- PARKETOVÉ
- ORC
- TEXT
Pokud chcete spravovat přístup k podkladovému cloudovému úložišti pro externí tabulku, musíte nastavit přihlašovací údaje úložiště a externí umístění.
Další informace najdete v tématu Vytvoření externí tabulky.
Požadavky
Musíte mít CREATE TABLE
oprávnění ke schématu, ve kterém chcete vytvořit tabulku, a také USE SCHEMA
oprávnění ke schématu a USE CATALOG
oprávnění nadřazeného katalogu.
Pokud vytváříte externí tabulku, přečtěte si téma Vytvoření externí tabulky pro další požadavky.
Vytvoření spravované tabulky
Pokud chcete vytvořit spravovanou tabulku, spusťte následující příkaz SQL. Položky v závorkách jsou volitelné. Nahraďte zástupné hodnoty:
<catalog-name>
: Název katalogu, který bude obsahovat tabulku.Nejde o
hive_metastore
katalog, který se vytvoří automaticky pro metastor Hive přidružený k vašemu pracovnímu prostoru Azure Databricks. Název katalogu můžete odstranit, pokud vytváříte tabulku ve výchozím katalogu pracovního prostoru.<schema-name>
: Název schématu, který bude obsahovat tabulku..<table-name>
: Název tabulky.<column-specification>
: Název a datový typ pro každý sloupec.
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>" +
")")
Spravovanou tabulku můžete vytvořit také pomocí zprostředkovatele Databricks Terraform a databricks_table. Seznam celých jmen tabulky můžete načíst pomocí databricks_tables.
Pokud chcete například vytvořit tabulku main.default.department
a vložit do ní pět řádků:
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')")
Vyřazení spravované tabulky
Pokud chcete tabulku odstranit, musíte být vlastníkem tabulky. Pokud chcete odstranit spravovanou tabulku, spusťte následující příkaz SQL:
DROP TABLE IF EXISTS catalog_name.schema_name.table_name;
Když dojde k vyřazení spravované tabulky, její podkladová data se ze svého cloudového tenanta odstraní do 30 dnů.
Vytvoření externí tabulky
Data v externí tabulce jsou uložená v cestě vašeho cloudového tenanta. Pro práci s externími tabulkami představuje Katalog Unity dva objekty pro přístup k externímu cloudovému úložišti a práci s nimi:
- Přihlašovací údaje úložiště obsahují metodu ověřování pro přístup k umístění cloudového úložiště. Přihlašovací údaje úložiště neobsahují mapování na cestu, ke které uděluje přístup. Přihlašovací údaje k úložišti jsou řízeny přístupem a určují, kteří uživatelé můžou přihlašovací údaje používat.
- Externí umístění mapuje přihlašovací údaje úložiště s cestou cloudového úložiště, ke které uděluje přístup. Externí umístění uděluje přístup pouze k této cestě cloudového úložiště a jeho obsahu. Externí umístění jsou řízená přístupem a určují, kteří uživatelé je můžou používat. Externí umístění se použije automaticky, když příkaz SQL obsahuje
LOCATION
klauzuli.
Požadavky
Pokud chcete vytvořit externí tabulku, musíte mít:
- Oprávnění
CREATE EXTERNAL TABLE
k externímu umístění, které uděluje přístup kLOCATION
přístupové tabulce. - Oprávnění
USE SCHEMA
nadřazeného schématu tabulky. - Oprávnění
USE CATALOG
k nadřazenému katalogu tabulky. - Oprávnění
CREATE TABLE
nadřazeného schématu tabulky.
Externí umístění a přihlašovací údaje k úložišti se ukládají na úrovni metastoru, nikoli v katalogu. Pokud chcete vytvořit přihlašovací údaje úložiště, musíte být správcem účtu nebo mít oprávnění CREATE STORAGE CREDENTIAL
. Pokud chcete vytvořit externí umístění, musíte být správcem metastoru CREATE EXTERNAL LOCATION
nebo mít oprávnění. Viz Připojení do cloudového úložiště objektů pomocí katalogu Unity.
Vytvoření tabulky
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.
Ukázkový poznámkový blok můžete použít také k vytvoření přihlašovacích údajů úložiště, externího umístění a externí tabulky a také ke správě oprávnění.
V následujících příkladech nahraďte zástupné hodnoty:
<catalog>
: Název katalogu, který bude obsahovat tabulku.Nejde o
hive_metastore
katalog, který se vytvoří automaticky pro metastor Hive přidružený k vašemu pracovnímu prostoru Azure Databricks. Název katalogu můžete odstranit, pokud vytváříte tabulku ve výchozím katalogu pracovního prostoru.<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 tabulka vytvoří.<table-directory>
: Adresář, ve kterém se vytvoří tabulka. Pro každou tabulku použijte jedinečný adresář.
Důležité
Po vytvoření tabulky v cestě už uživatelé nebudou mít přímý přístup k souborům v této cestě z Azure Databricks, i když jim byla udělena oprávnění k externímu umístění nebo přihlašovacím údajům úložiště. Tím zajistíte, aby uživatelé nemohli obcházet řízení přístupu použité u tabulek čtením souborů z cloudového tenanta přímo.
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>'")
Katalog Unity kontroluje, jestli máte následující oprávnění:
CREATE EXTERNAL TABLE
na externím umístění, které odkazuje na zadaná cesta cloudového úložiště.CREATE TABLE
v nadřazené schématu.USE SCHEMA
v nadřazené schématu.USE CATALOG
v nadřazené katalogu.
Pokud to uděláte, vytvoří se externí tabulka. V opačném případě dojde k chybě a externí tabulka se nevytvořila.
Poznámka:
Místo toho můžete migrovat existující externí tabulku v metastoru Hive do katalogu Unity bez duplikování dat. Viz Upgrade jedné tabulky Hive na externí tabulku Katalogu Unity pomocí průvodce upgradem.
Externí tabulku můžete vytvořit také pomocí zprostředkovatele Databricks Terraform a databricks_table. Seznam celých jmen tabulky můžete načíst pomocí databricks_tables.
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
Vytvoření tabulky ze souborů uložených v cloudovém tenantovi
Spravovanou nebo externí tabulku můžete naplnit záznamy ze souborů uložených ve vašem cloudovém tenantovi. Katalog Unity čte soubory v daném umístění a vloží jejich obsah do tabulky. V katalogu Unity se tomu říká přístup založený na cestě.
Můžete postupovat podle příkladůvchch
Prozkoumání obsahu souborů
Pokud chcete prozkoumat data uložená v externím umístění před vytvořením tabulek z těchto dat, můžete použít Průzkumníka katalogu nebo následující příkazy.
Požadovaná oprávnění: K vrácení seznamu datových souborů v tomto umístění musíte mít READ FILES
oprávnění k externímu umístění přidruženému k cestě cloudového úložiště.
Sql
Výpis souborů v cestě cloudového úložiště:
LIST 'abfss://<path-to-files>';
Dotazujte se na data v souborech v dané cestě:
SELECT * FROM <format>.`abfss://<path-to-files>`;
Python
Výpis souborů v cestě cloudového úložiště:
display(spark.sql("LIST 'abfss://<path-to-files>'"))
Dotazujte se na data v souborech v dané cestě:
display(spark.read.load("abfss://<path-to-files>"))
R
Výpis souborů v cestě cloudového úložiště:
library(SparkR) display(sql("LIST 'abfss://<path-to-files>'"))
Dotazujte se na data v souborech v dané cestě:
library(SparkR) display(loadDF("abfss://<path-to-files>"))
Scala
Výpis souborů v cestě cloudového úložiště:
display(spark.sql("LIST 'abfss://<path-to-files>'"))
Dotazujte se na data v souborech v dané cestě:
display(spark.read.load("abfss://<path-to-files>"))
Vytvoření tabulky ze souborů
Postupujte podle příkladů v této části a vytvořte novou tabulku a naplňte ji datovými soubory ve vašem cloudovém tenantovi.
Poznámka:
Místo toho můžete migrovat existující externí tabulku v metastoru Hive do katalogu Unity bez duplikování dat. Viz Upgrade jedné tabulky Hive na externí tabulku Katalogu Unity pomocí průvodce upgradem.
Důležité
- Při vytváření tabulky pomocí této metody se cesta k úložišti čte jen jednou, aby se zabránilo duplikování záznamů. Pokud chcete znovu přečíst obsah adresáře, musíte tabulku odstranit a znovu vytvořit. U existující tabulky můžete vložit záznamy z cesty k úložišti.
- Cestu kontejneru, ve které vytvoříte tabulku, nelze použít také ke čtení nebo zápisu datových souborů.
- Jen soubory v přesném adresáři jsou přečtené; čtení není rekurzivní.
- Musíte mít následující oprávnění:
USE CATALOG
v nadřazeného katalogu aUSE SCHEMA
ve schématu.CREATE TABLE
v nadřazené schématu.READ FILES
v externím umístění přidruženém k cestě kontejneru, kde se soubory nacházejí, nebo přímo na přihlašovacích údajích úložiště, pokud nepoužíváte externí umístění.- Pokud vytváříte externí tabulku, potřebujete
CREATE EXTERNAL TABLE
cestu kontejneru, ve které se tabulka vytvoří.
Pokud chcete vytvořit novou spravovanou tabulku a naplnit ji daty v cloudovém úložišti, použijte následující příklady.
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>`")
Pokud chcete vytvořit externí tabulku a naplnit ji daty v cloudovém úložišti, přidejte klauzuli LOCATION
:
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>`")
Vložení záznamů z cesty do existující tabulky
Pokud chcete vložit záznamy z cesty kbelíku do existující tabulky, použijte COPY INTO
příkaz. V následujících příkladech nahraďte zástupné hodnoty:
<catalog>
: Název nadřazeného katalogu tabulky.<schema>
: Název nadřazeného schématu tabulky.<path-to-files>
: Cesta kontejneru, která obsahuje datové soubory.<format>
: Formát souborů, napříkladdelta
.<table-location>
: Cesta kontejneru, ve které se vytvoří tabulka.
Důležité
- Při vkládání záznamů do tabulky pomocí této metody je cesta kontejneru, kterou zadáte, jen jednou pro čtení, aby se zabránilo duplikaci záznamů.
- Cestu kontejneru, ve které vytvoříte tabulku, nelze použít také ke čtení nebo zápisu datových souborů.
- Jen soubory v přesném adresáři jsou přečtené; čtení není rekurzivní.
- Musíte mít následující oprávnění:
USE CATALOG
v nadřazeného katalogu aUSE SCHEMA
ve schématu.MODIFY
v tabulce.READ FILES
v externím umístění přidruženém k cestě kontejneru, kde se soubory nacházejí, nebo přímo na přihlašovacích údajích úložiště, pokud nepoužíváte externí umístění.- Pokud chcete vložit záznamy do externí tabulky, potřebujete
CREATE EXTERNAL TABLE
cestu kontejneru, kde se tabulka nachází.
Pokud chcete do spravované tabulky vložit záznamy ze souborů v cestě kontejneru, použijte externí umístění ke čtení z cesty kontejneru:
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>")
Pokud chcete vložit do externí tabulky, přidejte klauzuli LOCATION
:
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>")
Přidání komentářů do tabulky
Jako vlastník tabulky nebo uživatel s MODIFY
oprávněním k tabulce můžete přidávat komentáře do tabulky a jejích sloupců. Komentáře můžete přidat pomocí následujících funkcí:
- Příkaz COMMENT ON Tato možnost nepodporuje komentáře sloupců.
- Možnost
COMMENT
při použití příkazů CREATE TABLE a ALTER TABLE . Tato možnost podporuje komentáře sloupců. - Pole ručního komentáře v Průzkumníku katalogu. Tato možnost podporuje komentáře sloupců. Podívejte se na data dokumentu v Průzkumníku katalogu pomocí komentářů markdownu.
- Komentáře generované AI (označované také jako dokumentace generované AI) v Průzkumníku katalogu Můžete zobrazit komentář navržený velkým jazykovým modelem (LLM), který bere v úvahu metadata tabulky, jako jsou názvy tabulek a sloupců, a upravit nebo přijmout komentář tak, jak je přidat. Viz Přidání komentářů generovaných AI do tabulky.
Další kroky
Váš názor
https://aka.ms/ContentUserFeedback.
Připravujeme: V průběhu roku 2024 budeme postupně vyřazovat problémy z GitHub coby mechanismus zpětné vazby pro obsah a nahrazovat ho novým systémem zpětné vazby. Další informace naleznete v tématu:Odeslat a zobrazit názory pro