Share via


Táblák létrehozása a Unity Katalógusban

Ez a cikk bemutatja a felügyelt és külső táblák fogalmát a Unity Catalogban, és ismerteti, hogyan hozhat létre táblákat a Unity Catalogban.

Feljegyzés

Táblázat létrehozásakor mindenképpen hivatkozzon a Unity Catalog által szabályozott katalógusra, vagy állítsa az alapértelmezett katalógust egy Unity-katalógus által szabályozott katalógusra. Lásd : Az alapértelmezett katalógus kezelése.

A katalógus hive_metastore megjelenik a Catalog Explorerben, de a Unity Catalog nem szabályozza. Az Azure Databricks-munkaterület Hive-metaadattára kezeli. Az összes többi felsorolt katalógust a Unity Katalógus szabályozza.

A Unity Catalog táblafrissítési felületével frissítheti a Hive metaadattárban regisztrált meglévő táblákat a Unity Catalogra. Lásd: Hive-táblák és nézetek frissítése Unity-katalógusra.

Felügyelt táblák

A felügyelt táblák az alapértelmezett módszer táblák létrehozására a Unity Catalogban. A Unity Catalog kezeli a táblák életciklusát és fájlelrendezését. Ne használjon az Azure Databricksen kívüli eszközöket az ezekben a táblákban lévő fájlok közvetlen kezeléséhez.

A felügyelt táblák a séma és a katalógus konfigurálásának módjától függően a metaadattár, a katalógus vagy a séma szintjén, felügyelt tárolóban vannak tárolva. Lásd: Felügyelt tárhely megadása a Unity Katalógusban.

A felügyelt táblák mindig a Delta táblaformátumot használják.

A felügyelt táblák elvetésekor a mögöttes adatok 30 napon belül törlődnek a felhőbeli bérlőből.

Külső táblák

A külső táblák olyan táblák, amelyek adatait a metaadattárhoz, katalógushoz vagy sémához megadott felügyelt tárolóhelyen kívül tárolják. Csak akkor használjon külső táblákat, ha közvetlen hozzáférést igényel az Adatokhoz az Azure Databricks-fürtökön vagy a Databricks SQL-tárolókon kívül.

Ha külső táblán fut DROP TABLE , a Unity Catalog nem törli az alapul szolgáló adatokat. Ha el szeretne dobni egy táblát, annak a tulajdonosának kell lennie. A külső táblák jogosultságait ugyanúgy kezelheti és használhatja a lekérdezésekben, mint a felügyelt táblákat. Ha külső táblát szeretne létrehozni az SQL használatával, adjon meg egy LOCATION elérési utat az CREATE TABLE utasításban. A külső táblák a következő fájlformátumokat használhatják:

  • DELTA
  • CSV
  • JSON
  • AVRO
  • PARKETTA
  • ORK
  • SZÖVEG

Egy külső tábla mögöttes felhőalapú tárolóhoz való hozzáférésének kezeléséhez be kell állítania a tárolási hitelesítő adatokat és a külső helyeket.

További információ: Külső tábla létrehozása.

Követelmények

Rendelkeznie kell a CREATE TABLE táblát létrehozó sémához tartozó jogosultsággal, valamint a USE SCHEMA séma jogosultságával és a USE CATALOG szülőkatalógus jogosultságával.

Ha külső táblát hoz létre, további követelményekért tekintse meg a Külső tábla létrehozása című témakört.

Felügyelt tábla létrehozása

Felügyelt tábla létrehozásához futtassa a következő SQL-parancsot. A szögletes zárójelek nem kötelezőek. Cserélje le a helyőrző értékeket:

  • <catalog-name>: A táblát tartalmazó katalógus neve.

    Ez nem lehet az hive_metastore Azure Databricks-munkaterülethez társított Hive-metaadattár automatikusan létrehozott katalógusa. A katalógus nevét elvetheti, ha a táblát a munkaterület alapértelmezett katalógusában hozza létre.

  • <schema-name>: A táblát tartalmazó séma neve.

  • <table-name>: A tábla neve.

  • <column-specification>: Az egyes oszlopok neve és adattípusa.

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>" +
  ")")

Felügyelt táblát a Databricks Terraform szolgáltatóval és databricks_table is létrehozhat. A teljes táblázatnevek listáját databricks_tables használatával kérdezheti le.

Például a táblázat main.default.department létrehozásához és öt sor beszúrásához:

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')")

Felügyelt tábla elvetése

A tábla elvetéséhez a tábla tulajdonosának kell lennie. Felügyelt tábla elvetéséhez futtassa a következő SQL-parancsot:

DROP TABLE IF EXISTS catalog_name.schema_name.table_name;

A felügyelt táblák elvetésekor a mögöttes adatok 30 napon belül törlődnek a felhőbeli bérlőből.

Külső tábla létrehozása

A külső táblában lévő adatok a felhőbeli bérlő egyik elérési útján lesznek tárolva. A külső táblák használatához a Unity Catalog két objektumot vezet be a külső felhőbeli tárterület eléréséhez és használatához:

  • A tárolási hitelesítő adatok egy hitelesítési módszert tartalmaznak a felhőbeli tárolóhelyek eléréséhez. A tároló hitelesítő adatai nem tartalmaznak leképezést arra az elérési útra, amelyhez hozzáférést biztosít. A tár hitelesítő adatai hozzáférés-vezérléssel határozhatók meg, hogy mely felhasználók használhatják a hitelesítő adatokat.
  • Egy külső hely leképezett egy tároló hitelesítő adatait egy felhőbeli tárolási útvonallal, amelyhez hozzáférést biztosít. A külső hely csak az adott felhőbeli tárolási útvonalhoz és annak tartalmához biztosít hozzáférést. A külső helyek hozzáférés-vezérléssel határozzák meg, hogy mely felhasználók használhatják őket. A rendszer automatikusan külső helyet használ, ha az SQL-parancs tartalmaz egy záradékot LOCATION .

Követelmények

Külső tábla létrehozásához a következőhöz kell rendelkeznie:

  • A CREATE EXTERNAL TABLE külső helyen található jogosultság, amely hozzáférést biztosít a LOCATION külső tábla által elért hozzáféréshez.
  • A USE SCHEMA tábla szülőséma engedélyének megadása.
  • A USE CATALOG tábla szülőkatalógusának engedélye.
  • A CREATE TABLE tábla szülőséma engedélyének megadása.

A külső helyek és a tár hitelesítő adatai a metaadattár szintjén vannak tárolva, nem pedig katalógusban. Tároló hitelesítő adatainak létrehozásához fiókadminisztrátornak kell lennie, vagy rendelkeznie kell jogosultsággal CREATE STORAGE CREDENTIAL . Külső hely létrehozásához a metaadattár rendszergazdájának kell lennie, vagy rendelkeznie kell a CREATE EXTERNAL LOCATION jogosultsággal. Lásd: Csatlakozás felhőbeli objektumtárba a Unity Catalog használatával.

Tábla létrehozása

Külső tábla létrehozásához használja az alábbi parancsok egyikét egy jegyzetfüzetben vagy az SQL-lekérdezésszerkesztőben.

Egy példajegyzetfüzet használatával létrehozhatja a tároló hitelesítő adatait, a külső helyet és a külső táblát, valamint kezelheti a hozzájuk tartozó engedélyeket is.

Az alábbi példákban cserélje le a helyőrző értékeket:

  • <catalog>: A táblát tartalmazó katalógus neve.

    Ez nem lehet az hive_metastore Azure Databricks-munkaterülethez társított Hive-metaadattár automatikusan létrehozott katalógusa. A katalógus nevét elvetheti, ha a táblát a munkaterület alapértelmezett katalógusában hozza létre.

  • <schema>: A táblát tartalmazó séma neve.

  • <table-name>: A tábla neve.

  • <column-specification>: Az egyes oszlopok neve és adattípusa.

  • <bucket-path>: Annak a felhőbeli tárolónak az elérési útja, ahol a tábla létre lesz hozva.

  • <table-directory>: Egy könyvtár, ahol a tábla létrejön. Minden táblához használjon egyedi könyvtárat.

Fontos

Miután létrehozott egy táblát egy elérési úton, a felhasználók már nem férhetnek hozzá közvetlenül az elérési út fájljaihoz az Azure Databricksből, még akkor sem, ha ehhez külső helyen vagy tároló hitelesítő adatokban kaptak jogosultságokat. Ennek az a célja, hogy a felhasználók ne tudják megkerülni a táblákra alkalmazott hozzáférés-vezérléseket úgy, hogy közvetlenül a felhőbeli bérlőről olvassák be a fájlokat.

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>'")

A Unity Catalog ellenőrzi, hogy rendelkezik-e a következő engedélyekkel:

  • CREATE EXTERNAL TABLE a megadott felhőbeli tárolási útvonalra hivatkozó külső helyen.
  • CREATE TABLE a szülőséma.
  • USE SCHEMA a szülőséma.
  • USE CATALOG a szülőkatalógusban.

Ha így tesz, a külső tábla létrejön. Ellenkező esetben hiba történik, és a külső tábla nem jön létre.

Feljegyzés

Ehelyett migrálhat egy meglévő külső táblát a Hive-metaadattárban a Unity Catalogba anélkül, hogy az adatokat duplikálja. Lásd: Egyetlen Hive-tábla frissítése unity katalógusbeli külső táblára a frissítési varázslóval.

Külső táblát a Databricks Terraform szolgáltatóés databricks_table használatával is létrehozhat. A teljes táblázatnevek listáját databricks_tables használatával kérdezheti le.

Példajegyzetfüzet: Külső táblák létrehozása

Az alábbi példajegyzetfüzet segítségével katalógust, sémát és külső táblát hozhat létre, és kezelheti az engedélyeit.

Külső tábla létrehozása és kezelése a Unity Catalog-jegyzetfüzetben

Jegyzetfüzet beszerzése

Tábla létrehozása a felhőbeli bérlőben tárolt fájlokból

A felügyelt vagy külső táblákat feltöltheti a felhőbeli bérlőben tárolt fájlok rekordjaival. A Unity Catalog felolvassa a fájlokat ezen a helyen, és beszúrja a tartalmát a táblába. A Unity Catalogban ezt elérési útalapú hozzáférésnek nevezzük.

Kövesse az ebben a szakaszban szereplő példákat, vagy használja az adat hozzáadása felhasználói felületet.

A fájlok tartalmának megismerése

Ha egy külső helyen tárolt adatokat szeretne felderíteni, mielőtt táblákat hoz létre az adatokból, használhatja a Katalóguskezelőt vagy az alábbi parancsokat.

Szükséges engedélyek: A felhőbeli tároló elérési úthoz társított külső helyen engedéllyel kell rendelkeznie READ FILES az adott helyen található adatfájlok listájának visszaadásához.

Sql

  1. A felhőbeli tárolási útvonal fájljainak listázása:

    LIST 'abfss://<path-to-files>';
    
  2. A fájlokban lévő adatok lekérdezése egy adott elérési úton:

    SELECT * FROM <format>.`abfss://<path-to-files>`;
    

Python

  1. A felhőbeli tárolási útvonal fájljainak listázása:

    display(spark.sql("LIST 'abfss://<path-to-files>'"))
    
  2. A fájlokban lévő adatok lekérdezése egy adott elérési úton:

    display(spark.read.load("abfss://<path-to-files>"))
    

R

  1. A felhőbeli tárolási útvonal fájljainak listázása:

    library(SparkR)
    
    display(sql("LIST 'abfss://<path-to-files>'"))
    
  2. A fájlokban lévő adatok lekérdezése egy adott elérési úton:

    library(SparkR)
    
    display(loadDF("abfss://<path-to-files>"))
    

Scala

  1. A felhőbeli tárolási útvonal fájljainak listázása:

    display(spark.sql("LIST 'abfss://<path-to-files>'"))
    
  2. A fájlokban lévő adatok lekérdezése egy adott elérési úton:

    display(spark.read.load("abfss://<path-to-files>"))
    

Tábla létrehozása a fájlokból

Az ebben a szakaszban található példákat követve hozzon létre egy új táblát, és töltse fel a felhőbeli bérlő adatfájljaival.

Feljegyzés

Ehelyett migrálhat egy meglévő külső táblát a Hive-metaadattárban a Unity Catalogba anélkül, hogy az adatokat duplikálja. Lásd: Egyetlen Hive-tábla frissítése unity katalógusbeli külső táblára a frissítési varázslóval.

Fontos

  • Ha ezzel a módszerrel hoz létre egy táblát, a rendszer csak egyszer olvassa be a tárolási útvonalat a rekordok duplikálásának megakadályozása érdekében. Ha újra szeretné olvasni a könyvtár tartalmát, el kell helyeznie és újra létre kell hoznia a táblát. Meglévő tábla esetén rekordokat szúrhat be egy tárolási útvonalról.
  • A gyűjtő elérési útja, ahol táblázatot hoz létre, adatfájlok olvasására és írására sem használható.
  • Csak a pontos könyvtárban lévő fájlok vannak beolvasva; az olvasás nem rekurzív.
  • A következő engedélyekkel kell rendelkeznie:
    • USE CATALOG a szülőkatalógusban és USE SCHEMA a sémában.
    • CREATE TABLE a szülőséma.
    • READ FILES a gyűjtő elérési útjával társított külső helyen, ahol a fájlok találhatók, vagy közvetlenül a tároló hitelesítő adatain, ha nem használ külső helyet.
    • Ha külső táblát hoz létre, azon a gyűjtőútvonalon kell CREATE EXTERNAL TABLE lennie, ahol a tábla létre lesz hozva.

Ha új felügyelt táblát szeretne létrehozni, és a felhőbeli tárolóban lévő adatokkal szeretné feltölteni, használja az alábbi példákat.

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>`")

Ha külső táblát szeretne létrehozni, és a felhőbeli tárolóban lévő adatokkal szeretné feltölteni, adjon hozzá egy záradékot 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>`")

Rekordok beszúrása elérési útból egy meglévő táblába

Ha rekordokat szeretne beszúrni egy gyűjtőútvonalból egy meglévő táblába, használja a COPY INTO parancsot. Az alábbi példákban cserélje le a helyőrző értékeket:

  • <catalog>: A tábla szülőkatalógusának neve.
  • <schema>: A tábla szülőséma neve.
  • <path-to-files>: Az adatfájlokat tartalmazó gyűjtő elérési útja.
  • <format>: A fájlok formátuma, például delta.
  • <table-location>: A gyűjtő elérési útja, ahol a tábla létre lesz hozva.

Fontos

  • Ha rekordokat szúr be egy táblába ezzel a módszerrel, a megadott gyűjtőútvonal csak egyszer lesz olvasható a rekordok duplikálásának megakadályozása érdekében.
  • A gyűjtő elérési útja, ahol táblázatot hoz létre, adatfájlok olvasására és írására sem használható.
  • Csak a pontos könyvtárban lévő fájlok vannak beolvasva; az olvasás nem rekurzív.
  • A következő engedélyekkel kell rendelkeznie:
    • USE CATALOG a szülőkatalógusban és USE SCHEMA a sémában.
    • MODIFY a táblában.
    • READ FILES a gyűjtő elérési útjával társított külső helyen, ahol a fájlok találhatók, vagy közvetlenül a tároló hitelesítő adatain, ha nem használ külső helyet.
    • Ha rekordokat szeretne beszúrni egy külső táblába, a gyűjtő elérési útján kell CREATE EXTERNAL TABLE elhelyeznie a táblát.

Ha rekordokat szeretne beszúrni egy gyűjtőútvonal fájljaiból egy felügyelt táblába egy külső hely használatával a gyűjtő elérési útjából:

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>")

Külső táblába való beszúráshoz adjon hozzá egy záradékot 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>")

Megjegyzések hozzáadása táblázathoz

Táblatulajdonosként vagy egy táblán jogosultsággal MODIFY rendelkező felhasználóként megjegyzéseket fűzhet egy táblához és annak oszlopaihoz. Megjegyzéseket az alábbi funkciókkal adhat hozzá:

  • A COMMENT ON parancs. Ez a beállítás nem támogatja az oszlopbejegyzéseket.
  • Ez COMMENT a beállítás a CREATE TABLE és az ALTER TABLE parancsok használatakor használható. Ez a beállítás támogatja az oszlopbejegyzéseket.
  • A Katalóguskezelő "kézi" megjegyzésmezője. Ez a beállítás támogatja az oszlopbejegyzéseket. A Katalóguskezelő dokumentumadatainak megtekintése Markdown-megjegyzések használatával.
  • Az AI által létrehozott megjegyzések (más néven AI által létrehozott dokumentáció) a Catalog Explorerben. Megtekintheti a nagyméretű nyelvi modell (LLM) által javasolt megjegyzést, amely figyelembe veszi a tábla metaadatait, például a táblaséma és az oszlopneveket, és szerkesztheti vagy elfogadhatja a megjegyzést, hogy hozzáadja azt. Lásd: AI által létrehozott megjegyzések hozzáadása egy táblához.

Következő lépések