Databricks-táblák olvasása Iceberg-ügyfelekről
Az Iceberg REST-katalógus használatával elolvashatja a Unity-katalógus által regisztrált táblákat az Azure Databricksben a támogatott Iceberg-ügyfelekről, beleértve az Apache Sparkot, az Apache Flinket, a Trinót és a Snowflake-t.
Olvasás a Unity Catalog Iceberg-katalógus végpontja használatával
A Unity Catalog az Iceberg REST catalog API írásvédett implementációját biztosítja a táblákhoz, amelyeken engedélyezve vannak az Iceberg-olvasások.
A hozzáférés konfigurálása a végpont /api/2.1/unity-catalog/iceberg
használatával. A REST API használatával kapcsolatos részletekért tekintse meg a Iceberg REST API specifikációs.
Jegyzet
Az Azure Databricks bevezette a hitelesítő adatok kiosztását néhány Iceberg olvasó ügyfél számára. A Databricks javasolja a hitelesítő adatok kiadását a felhőalapú tárolóhelyekhez való hozzáférés szabályozására a támogatott rendszerek esetében. Lásd: Unity Catalog hitelesítő adatok kiosztása külső rendszer-hozzáféréshez.
Ha az ügyfél nem támogatja a hitelesítő adatok kiosztását, konfigurálnia kell az ügyfél hozzáférését a Delta-táblához tartozó fájlokat és metaadatokat tartalmazó felhőbeli tárolóhelyhez, ahol az Iceberg-olvasások (UniForm) engedélyezve vannak. A konfiguráció részleteiért tekintse meg az Iceberg-olvasó ügyfél dokumentációját.
Követelmények
Az Azure Databricks a Unity Catalog részeként támogatja az Iceberg REST-katalógus táblákhoz való hozzáférését. Ezeknek a végpontoknak a használatához engedélyeznie kell a Unity Katalógust a munkaterületen. A következő táblázattípusok jogosultak az Iceberg REST-katalógus olvasására:
- A Unity Catalog által felügyelt táblák, amelyeken engedélyezve van az Iceberg-olvasás (UniForm).
- A Unity Catalog külső táblái a Delta Lake-ben vannak tárolva, és engedélyezve vannak az Iceberg-olvasások (UniForm).
Lásd: Delta-táblák olvasása Iceberg kliensekkel.
A Databricks-táblák Iceberg-ügyfelekről való olvasásához a következő konfigurációs lépéseket kell elvégeznie az Iceberg REST-katalógus használatával:
- Engedélyezze külső adathozzáférést a metaadattárhoz. Lásd: A külső adathozzáférés engedélyezése a metaadattárban.
- Adja meg a
EXTERNAL USE SCHEMA
jogosultságot a táblákat tartalmazó sémán az integrációt konfiguráló megbízónak. Lásd: Egyszerű külső USE SCHEMAmegadása. - Hitelesítés a Databricks személyes hozzáférési jogkivonatával. Lásd: Azure Databricks-erőforrásokhoz való hozzáférés engedélyezése.
Iceberg-táblák olvasása az Apache Spark használatával
Az alábbiakban egy példa látható az Apache Spark azure Databricks-táblák Icebergként való olvasására való konfigurálásának beállításaira:
"spark.sql.extensions": "org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions",
# Configuration for accessing Uniform tables in Unity Catalog
"spark.sql.catalog.<spark-catalog-name>": "org.apache.iceberg.spark.SparkCatalog",
"spark.sql.catalog.<spark-catalog-name>.type": "rest",
"spark.sql.catalog.<spark-catalog-name>.uri": "<workspace-url>/api/2.1/unity-catalog/iceberg",
"spark.sql.catalog.<spark-catalog-name>.token":"<token>",
"spark.sql.catalog.<spark-catalog-name>.warehouse":"<uc-catalog-name>"
Cserélje le a következő változókat:
-
<uc-catalog-name>
: Az Unity Catalog katalógusának neve, amely tartalmazza a táblákat. -
<spark-catalog-name>
: A katalógust a Spark-munkamenetben hozzárendelni kívánt név. -
<workspace-url>
: Az Azure Databricks-munkaterület URL-címe. -
<token>
: PAT-jogkivonat az integrációt konfiguráló fő felhasználó számára.
Ezekkel a konfigurációkkal az Azure Databricks-táblákat Icebergként kérdezheti le az Apache Sparkban a <catalog-name>.<schema-name>.<table-name>
azonosító használatával. Ha több katalógus tábláit szeretné elérni, minden katalógust külön kell konfigurálnia.
Ha Spark-konfigurációkkal kérdez le táblákat a Unity Katalógusban, tartsa szem előtt az alábbiakat:
Csak akkor van szüksége
"spark.sql.extensions": "org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions"
-ra, ha Iceberg-specifikus tárolt eljárásokat futtat .Az Azure Databricks minden táblához felhőalapú objektumtárolást használ. A felhőspecifikus Iceberg-csomag JAR-t Spark-csomagként kell hozzáadnia:
- AWS:
org.apache.iceberg:iceberg-aws-bundle:<iceberg-version>
- Azúr:
org.apache.iceberg:iceberg-azure-bundle:<iceberg-version>
- GCP:
org.apache.iceberg:iceberg-gcp-bundle:<iceberg-version>
További részletekért tekintse meg a SparkIceberg AWS-integrációjának dokumentációját.
- AWS:
Databricks-táblák olvasása Snowflake használatával
Az alábbiakban egy példa látható az ajánlott konfigurációs beállításokra, amelyek lehetővé teszik, hogy Snowflake icebergként olvassa be az Azure Databricks-táblákat:
CREATE OR REPLACE CATALOG INTEGRATION <catalog-integration-name>
CATALOG_SOURCE = ICEBERG_REST
TABLE_FORMAT = ICEBERG
CATALOG_NAMESPACE = '<uc-schema-name>'
REST_CONFIG = (
CATALOG_URI = '<workspace-url>/api/2.1/unity-catalog/iceberg',
WAREHOUSE = '<uc-catalog-name>'
)
REST_AUTHENTICATION = (
TYPE = BEARER
BEARER_TOKEN = '<token>'
)
ENABLED = TRUE;
Cserélje le a következő változókat:
-
<catalog-integration-name>
: A Snowflake-hez regisztrált katalógust hozzárendelni kívánt név. -
<uc-schema-name>
: A unity katalógusban elérhető séma neve. -
<uc-catalog-name>
: A katalógus neve az Unity katalógusban, amit el kell érni. -
<workspace-url>
: Az Azure Databricks-munkaterület URL-címe. -
<token>
: PAT-jogkivonat az integrációt konfiguráló fő felhasználó számára.
REST API curl példa
A táblázatban szereplő curl
példához hasonló REST API-hívással is betölthet egy táblát:
curl -X GET -H "Authentication: Bearer $OAUTH_TOKEN" -H "Accept: application/json" \
https://<workspace-instance>/api/2.1/unity-catalog/iceberg/v1/catalogs/<uc_catalog_name>/namespaces/<uc_schema_name>/tables/<uc_table_name>
Ezután a következőhöz hasonló választ kell kapnia:
{
"metadata-location": "abfss://my-container@my-storage-account.dfs.core.windows.net/path/to/iceberg/table/metadata/file",
"metadata": <iceberg-table-metadata-json>,
"config": {
"expires-at-ms": "<epoch-ts-in-millis>",
"adls.sas-token.<storage-account-name>.dfs.core.windows.net": "<temporary-sas-token>"
}
}
Jegyzet
A válasz expires-at-ms
mezője a hitelesítő adatok lejárati idejét jelzi, és alapértelmezett lejárati ideje egy óra. A jobb teljesítmény érdekében az ügyfél gyorsítótárazza a hitelesítő adatokat a lejárati időig, mielőtt újat kér.