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 aLOCATION
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
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
A felhőbeli tárolási útvonal fájljainak listázása:
LIST 'abfss://<path-to-files>';
A fájlokban lévő adatok lekérdezése egy adott elérési úton:
SELECT * FROM <format>.`abfss://<path-to-files>`;
Python
A felhőbeli tárolási útvonal fájljainak listázása:
display(spark.sql("LIST 'abfss://<path-to-files>'"))
A fájlokban lévő adatok lekérdezése egy adott elérési úton:
display(spark.read.load("abfss://<path-to-files>"))
R
A felhőbeli tárolási útvonal fájljainak listázása:
library(SparkR) display(sql("LIST 'abfss://<path-to-files>'"))
A fájlokban lévő adatok lekérdezése egy adott elérési úton:
library(SparkR) display(loadDF("abfss://<path-to-files>"))
Scala
A felhőbeli tárolási útvonal fájljainak listázása:
display(spark.sql("LIST 'abfss://<path-to-files>'"))
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 ésUSE 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áuldelta
.<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 ésUSE 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
Visszajelzés
https://aka.ms/ContentUserFeedback.
Hamarosan elérhető: 2024-ben fokozatosan kivezetjük a GitHub-problémákat a tartalom visszajelzési mechanizmusaként, és lecseréljük egy új visszajelzési rendszerre. További információ:Visszajelzés küldése és megtekintése a következőhöz: