Megosztás a következőn keresztül:


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/iceberghaszná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:

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.

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.