Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A Unity Catalogban egy külső tábla a felhőbeli bérlőn belüli felhőobjektum-tárolóban tárolja az adatfájljait. A Unity Catalog továbbra is kezeli a tábla metaadatait, így minden lekérdezés teljes adatszabályozást biztosít. Azonban nem kezeli az adatok életciklusát, optimalizálását, tárolási helyét vagy elrendezését.
Ha külső Unity Catalog-táblát definiál, meg kell adnia egy tárolóhelyet. Ez a hely egy, a Unity Katalógusban regisztrált külső hely . Külső tábla elvetésekor a Unity Catalog eltávolítja a tábla metaadatait, de nem törli az alapul szolgáló adatfájlokat.
Ez a lap a Unity Catalog külső táblázataira összpontosít. Az örökölt Hive-metaadattár külső táblái eltérő viselkedésűek. Tekintse meg az adatbázis-objektumokat az örökölt Hive-metaadattárban.
Mikor érdemes külső táblákat használni?
A Databricks külső táblák használatát javasolja a következő használati esetekhez:
- Olyan táblát kell regisztrálnia, amely olyan meglévő adatokon alapul, amelyek nem kompatibilisek a Unity Catalog által felügyelt táblákkal, például JSON-nal vagy Avro-val. Lásd: A külső táblák fájlformátumai.
- Olyan nem Databricks-ügyfelek adataihoz kell közvetlen hozzáférést kérnie, amelyek nem támogatnak más külső hozzáférési mintákat. A Unity Catalog-jogosultságok nem lesznek kényszerítve, ha a felhasználók külső rendszerekből férnek hozzá adatfájlokhoz. Lásd: Databricks-adatok elérése külső rendszerekkel.
A Databricks a legtöbb esetben a Unity Catalog által felügyelt táblák használatát javasolja az automatikus táblaoptimalizálás, a gyorsabb lekérdezési teljesítmény és a költségek csökkentése érdekében. A külső táblák felügyelt táblákba való migrálásával kapcsolatban lásd: Külső vagy külső Delta Lake-táblák konvertálása Unity Catalog által felügyelt táblákká.
Fontos
Ha nem Databricks-ügyféllel frissíti a külső tábla metaadatait, vagy útvonalalapú hozzáférést használ a Databricksből, akkor a metaadatok nem szinkronizálják automatikusan az állapotot a Unity Katalógussal. A Databricks nem javasolja az ilyen metaadatok frissítését, de ha mégis végrehajt egyet, akkor futtatnia kell a MSCK REPAIR TABLE <table-name> SYNC METADATA-t a séma frissítéséhez a Unity Catalogban. Lásd: REPAIR TABLE.
Fájlformátumok külső táblákhoz
A külső táblák a következő fájlformátumokat használhatják:
- DELTA
- CSV
- JSON
- AVRO
- PARKETTA
- ORK
- szöveg
Külső tábla létrehozása
Külső táblákat SQL-parancsokkal vagy DataFrame írási műveletekkel hozhat létre.
Kezdés előtt
Külső tábla létrehozása előtt konfigurálnia kell egy külső helyet, amely hozzáférést biztosít a felhőbeli tárolóhoz.
További információ a külső helyek konfigurálásáról: Csatlakozás Azure Data Lake Storage Gen2 (ADLS Gen2) külső helyhez.
Külső tábla létrehozásához meg kell felelnie az alábbi engedélykövetelményeknek:
- A
CREATE EXTERNAL TABLEjogosultság egy külső helyen, amely hozzáférést biztosít a külső tábla által elértLOCATION. - A tábla szülői katalógusának
USE CATALOGengedélye. - A
USE SCHEMAtábla szülőséma engedélyének megadása. - A
CREATE TABLEtábla szülőséma engedélyének megadása.
Megjegyzés:
Ha egy S3 külső hely több metaadattárhoz van társítva, ne adjon írási hozzáférést azoknak a tábláknak, amelyek ezt az S3-helyet használják, mert a különböző metaadattárakból ugyanarra a külső táblára történő írás konzisztenciaproblémákat okozhat. A több metaadattárban lévő ugyanazon S3 külső helyről való olvasás azonban biztonságos.
Példák
Külső tábla létrehozásához használja az alábbi példák egyikét egy jegyzetfüzetben vagy az SQL-lekérdezésszerkesztőben.
Az alábbi példákban cserélje le a helyőrző értékeket:
-
<catalog>: A táblát tartalmazó katalógus neve. -
<schema>: A táblát tartalmazó séma neve. -
<table-name>: A tábla neve. -
<column-name>és<data-type>: 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, amelyben a tábla létrejön. Minden táblához használjon egyedi könyvtárat. -
<source-table>: Egy tábla, amely adatforrásként használható, amikor lekérdezési eredményekből hoz létre táblát.
SQL
Ha egy definiált sémát tartalmazó külső táblát szeretne létrehozni az ADLS Gen2-ben, futtassa a következőket:
CREATE TABLE <catalog>.<schema>.<table-name>
(
<column-name> <data-type>
)
LOCATION 'abfss://<bucket-path>/<table-directory>';
Ha külső táblát szeretne létrehozni az ADLS Gen2-ben a lekérdezési eredményekből, futtassa a következőket:
CREATE TABLE <catalog>.<schema>.<table-name>
LOCATION 'abfss://<bucket-path>/<table-directory>'
AS SELECT * FROM <source-table>;
Ha egy definiált sémával szeretne külső táblát létrehozni az S3-ban, futtassa a következőket:
CREATE TABLE <catalog>.<schema>.<table-name>
(
<column-name> <data-type>
)
LOCATION 's3://<bucket-path>/<table-directory>';
Ha külső táblát szeretne létrehozni az S3-ban a lekérdezési eredményekből, futtassa a következőket:
CREATE TABLE <catalog>.<schema>.<table-name>
LOCATION 's3://<bucket-path>/<table-directory>'
AS SELECT * FROM <source-table>;
Python
Ha egy definiált sémát tartalmazó külső táblát szeretne létrehozni az ADLS Gen2-ben, futtassa a következőket:
from pyspark.sql.types import StructType, StructField, StringType
schema = StructType([StructField("<column-name>", <data-type>())])
spark.createDataFrame([], schema).write \
.option("path", "abfss://<bucket-path>/<table-directory>") \
.saveAsTable("<catalog>.<schema>.<table-name>")
Ha egy DataFrame-ből szeretne külső táblát létrehozni az ADLS Gen2-ben, futtassa a következőket:
df.write \
.option("path", "abfss://<bucket-path>/<table-directory>") \
.saveAsTable("<catalog>.<schema>.<table-name>")
Ha egy definiált sémával szeretne külső táblát létrehozni az S3-ban, futtassa a következőket:
from pyspark.sql.types import StructType, StructField, StringType
schema = StructType([StructField("<column-name>", <data-type>())])
spark.createDataFrame([], schema).write \
.option("path", "s3://<bucket-path>/<table-directory>") \
.saveAsTable("<catalog>.<schema>.<table-name>")
Ha egy DataFrame-ből szeretne külső táblát létrehozni az S3-ban, futtassa a következőket:
df.write \
.option("path", "s3://<bucket-path>/<table-directory>") \
.saveAsTable("<catalog>.<schema>.<table-name>")
További információ a táblalétrehozás paramétereiről: CREATE TABLE.
A DataFrame-műveletekhez az alábbi SQL-szintaxisi beállítások működnek:
Külső tábla eltávolítása
Egy tábla elvetéséhez annak tulajdonosának kell lennie, vagy MANAGE jogosultsággal kell rendelkeznie a táblán. Külső tábla törléséhez futtassa a következő parancsot:
SQL
DROP TABLE IF EXISTS catalog_name.schema_name.table_name;
Python
spark.sql("DROP TABLE IF EXISTS catalog_name.schema_name.table_name")
Másik lehetőségként a Databricks Runtime 18.2-ben és újabb verziókban használja a következőt spark.catalog.dropTable():
spark.catalog.dropTable("catalog_name.schema_name.table_name", ifExists=True)
A Unity Catalog nem törli az alapul szolgáló adatokat a felhőbeli tárolóban egy külső tábla elvetésekor. Közvetlenül törölnie kell a mögöttes adatfájlokat, ha el kell távolítania a táblához társított adatokat.
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.