Delen via


Databricks-tabellen lezen van Iceberg-clients

Gebruik de Iceberg REST-catalogus om geregistreerde tabellen van Unity Catalog in Azure Databricks te lezen van ondersteunde Iceberg-clients, waaronder Apache Spark, Apache Flink, Trino en Snowflake.

lezen met het eindpunt van de Unity Catalog Iceberg-catalogus

Unity Catalog biedt een alleen-lezen implementatie van de ICEBERG REST-catalogus-API voor tabellen waarvoor Iceberg-leesbewerkingen zijn ingeschakeld.

Toegang configureren met behulp van het eindpunt /api/2.1/unity-catalog/iceberg. Zie de Iceberg REST API-specificatie voor meer informatie over het gebruik van deze REST API.

Notitie

Azure Databricks heeft referentieverkoop geïntroduceerd voor sommige Iceberg-lezersclients. Databricks raadt het gebruik van referentieverkoop aan om de toegang tot cloudopslaglocaties voor ondersteunde systemen te beheren. Zie Unity Catalog-referentieverkoop voor toegang tot externe systemen.

Als credential-verstrekking niet wordt ondersteund voor uw cliënt, moet u toegang configureren van de cliënt naar de cloudopslaglocatie die de bestanden en metadata bevat voor de Delta-tabel waarvoor Iceberg-leesbewerkingen (UniForm) zijn ingeschakeld. Raadpleeg de documentatie voor uw Iceberg Reader-client voor configuratiegegevens.

Eisen

Azure Databricks biedt ondersteuning voor iceberg REST-catalogustoegang tot tabellen als onderdeel van Unity Catalog. U moet Unity Catalog in uw werkruimte hebben ingeschakeld om deze eindpunten te kunnen gebruiken. De volgende tabeltypen komen in aanmerking voor leesbewerkingen in iceberg REST-catalogus:

  • Beheerde tabellen in Unity Catalog met Iceberg-leesbewerkingen (UniForm) ingeschakeld.
  • Externe tabellen van Unity Catalog opgeslagen in Delta Lake met ingeschakelde Iceberg-lezers (UniForm).

Zie Delta-tabellen lezen met Iceberg-clients.

U moet de volgende configuratiestappen uitvoeren om de toegang te configureren voor het lezen van Databricks-tabellen van Iceberg-clients met behulp van de Iceberg REST-catalogus:

Iceberg-tabellen lezen met Apache Spark

Hier volgt een voorbeeld van de instellingen voor het configureren van Apache Spark voor het lezen van Azure Databricks-tabellen als Iceberg:

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

Vervang de volgende variabelen:

  • <uc-catalog-name>: de naam van de catalogus in Unity Catalog die uw tabellen bevat.
  • <spark-catalog-name>: de naam die u wilt toewijzen aan de catalogus in uw Spark-sessie.
  • <workspace-url>: URL van de Azure Databricks-werkruimte.
  • <token>: PAT-token voor de principal die de integratie configureert.

Met deze configuraties kunt u query's uitvoeren op Azure Databricks-tabellen als Iceberg in Apache Spark met behulp van de id <catalog-name>.<schema-name>.<table-name>. Als u toegang wilt krijgen tot tabellen in meerdere catalogi, moet u elke catalogus afzonderlijk configureren.

Wanneer u query's uitvoert op tabellen in Unity Catalog met behulp van Spark-configuraties, moet u rekening houden met het volgende:

  • Je hebt "spark.sql.extensions": "org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions" alleen nodig als je opgeslagen procedures specifiek voor Iceberguitvoert.

  • Azure Databricks maakt gebruik van cloudobjectopslag voor alle tabellen. U moet de cloudspecifieke JAR van de Iceberg-bundel toevoegen als een Spark-pakket:

    • AWS: org.apache.iceberg:iceberg-aws-bundle:<iceberg-version>
    • Azure: org.apache.iceberg:iceberg-azure-bundle:<iceberg-version>
    • GCP: org.apache.iceberg:iceberg-gcp-bundle:<iceberg-version>

    Zie de documentatie voor de Iceberg AWS-integratie voor Sparkvoor meer informatie.

Databricks-tabellen lezen met Snowflake

Hier volgt een voorbeeld van de aanbevolen configuratie-instellingen waarmee Snowflake Azure Databricks-tabellen als Iceberg kan lezen:

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;

Vervang de volgende variabelen:

  • <catalog-integration-name>: de naam die u wilt toewijzen aan de catalogus die is geregistreerd bij Snowflake.
  • <uc-schema-name>: de naam van het schema in Unity Catalog die u moet openen.
  • <uc-catalog-name>: de naam van de catalogus in Unity Catalog die u moet openen.
  • <workspace-url>: URL van de Azure Databricks-werkruimte.
  • <token>: PAT-token voor de principal die de integratie configureert.

Voorbeeld van REST API curl

U kunt ook een REST API-aanroep zoals in dit curl voorbeeld gebruiken om een tabel te laden:

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>

Vervolgens ontvangt u een antwoord dat er als volgt uitziet:

{
  "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>"
  }
}

Notitie

Het expires-at-ms veld in het antwoord geeft de verlooptijd van de referenties aan en heeft een standaardverlooptijd van één uur. Voor betere prestaties moet de client de referenties in de cache opslaan tot de vervaltijd voordat u een nieuwe aanvraagt.