Lire les tables Databricks à partir de clients Apache Iceberg (hérité)
Les produits, les services ou les technologies mentionnés dans ce contenu sont en mode maintenance et cette documentation a été retirée. Consultez l'accès aux tables Databricks à partir de clients Apache Iceberg.
Utilisez le catalogue Apache Iceberg REST pour lire les tables enregistrées dans Unity Catalog sur Databricks à partir de clients Iceberg pris en charge, y compris Apache Spark, Apache Flink, Trino et Snowflake.
Pour une liste complète des intégrations prises en charge, consultez les intégrations Unity Catalog.
Lire à l’aide de l’Endpoint du catalogue Iceberg d’Unity Catalog
Unity Catalog fournit une implémentation en lecture seule de l'API de catalogue REST Iceberg pour les tables avec lectures Iceberg activées.
Configurez l'accès à l'aide de l'endpoint /api/2.1/unity-catalog/iceberg. Consultez la spécification de l'API REST Iceberg pour plus de détails sur l'utilisation de cette API REST.
L'URL du Workspace utilisée pour l'Endpoint de catalogue Iceberg REST doit inclure l'ID du Workspace. Sans l'ID du workspace, les requêtes API peuvent renvoyer une redirection 303 vers une page de connexion au lieu de la réponse attendue.
Pour trouver l'URL et l'ID de votre workspace, consultez Noms d'instances, URL et ID de workspace.
Databricks a introduit la fourniture d'identifiants pour certains clients lecteurs Iceberg. Databricks recommande d'utiliser la fourniture d'identifiants pour contrôler l'accès aux emplacements de stockage cloud pour les systèmes pris en charge. Consultez la fourniture d'informations d'identification Unity Catalog pour l'accès aux systèmes externes.
Si l'émission d'informations d'identification n'est pas prise en charge pour votre client, vous devez configurer l'accès du client à l'emplacement de stockage cloud contenant les fichiers et les métadonnées pour la table Delta avec les lectures Iceberg (UniForm) activées. Reportez-vous à la documentation de votre client lecteur Iceberg pour les détails de configuration.
L'endpoint /api/2.1/unity-catalog/iceberg a une limite de débit de 5 QPS. Pour un QPS plus élevé, vous devriez utiliser l'endpoint /api/2.1/unity-catalog/iceberg-rest. Consultez Accéder aux tables Databricks à partir de clients Apache Iceberg.
Exigences
Databricks prend en charge l'accès au catalogue Iceberg REST aux tables dans le cadre de Unity Catalog. Vous devez avoir Unity Catalog activé dans votre Workspace pour utiliser ces Endpoints. Les types de table suivants sont éligibles aux lectures de catalogue Iceberg REST :
- Tables gérées par Unity Catalog avec lectures Iceberg (UniForm) activées.
- Tables externes Unity Catalog stockées avec Delta Lake et lectures Iceberg (UniForm) activées.
Voir Lire les tables Delta Lake avec les clients Iceberg utilisant UniForm.
Vous devez effectuer les étapes de configuration suivantes pour configurer l'accès en lecture aux tables Databricks à partir de clients Iceberg à l'aide du catalogue Iceberg REST :
- Activez l' accès aux données externes pour votre métastore. Voir Activer l'accès aux données externes sur le métastore.
- Accordez au principal qui configure l'intégration le privilège
EXTERNAL USE SCHEMAsur le schéma contenant les tables. Voir Accorder des privilèges Unity Catalog à un principal. - S'authentifier à l'aide d'un jeton d'accès personnel Databricks. Consultez Autoriser l'accès aux ressources Databricks.
Lire les tables Iceberg avec Apache Spark
Voici un exemple des paramètres permettant de configurer Apache Spark pour lire les tables Databricks en tant que tables 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>"
Substituez les variables suivantes :
<uc-catalog-name>: le nom du catalogue dans Unity Catalog qui contient vos tables.<spark-catalog-name>: le nom que vous souhaitez attribuer au catalogue dans votre session Spark.<workspace-url>: L' URL du Workspace Databricks, y compris l'ID du Workspace. Par exemple,https://cust-success.cloud.databricks.com/?o=6280049833385130ouhttps://adb-1234567890123456.12.azuredatabricks.net.<token>: jeton PAT pour le principal qui configure l'intégration.
Avec ces configurations, vous pouvez query des tables Databricks en tant qu'Iceberg dans Apache Spark à l'aide de l'identifiant <catalog-name>.<schema-name>.<table-name>. Pour accéder aux tables dans plusieurs catalogues, vous devez configurer chaque catalogue séparément.
Lorsque vous query les tables dans Unity Catalog à l’aide des configurations Spark, tenez compte des éléments suivants :
-
Vous n'avez besoin de
"spark.sql.extensions": "org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions"que si vous exécutez des procédures stockées spécifiques à Iceberg. -
Databricks utilise le stockage d'objets cloud pour toutes les tables. Vous devez ajouter le JAR de bundle Iceberg spécifique au cloud en tant que package Spark :
- 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>
Pour plus de détails, consultez la documentation de l'intégration Iceberg AWS pour Spark.
- AWS:
Lisez les tables Databricks avec Snowflake
Voici un exemple des paramètres de configuration recommandés pour permettre à Snowflake de lire les tables Databricks en tant qu'Iceberg :
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;
Remplacez les variables suivantes :
<catalog-integration-name>: Le nom que vous souhaitez attribuer au catalogue enregistré dans Snowflake.<uc-schema-name>: Le nom du schéma dans Unity Catalog auquel vous devez accéder.<uc-catalog-name>: Le nom du catalogue dans Unity Catalog auquel vous devez accéder.<workspace-url>: L' URL du Workspace Databricks, y compris l'ID du Workspace. Par exemple,https://cust-success.cloud.databricks.com/?o=6280049833385130ouhttps://adb-1234567890123456.12.azuredatabricks.net.<token>: jeton PAT pour le principal qui configure l'intégration.
Exemple de curl pour l'API REST
Vous pouvez également utiliser un appel d’API REST comme celui de cet exemple curl pour charger une table :
curl -X GET -H "Authorization: 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>
Vous devriez alors recevoir une réponse comme celle-ci :
{
"metadata-location": "s3://bucket/path/to/iceberg/table/metadata/file",
"metadata": <iceberg-table-metadata-json>,
"config": {
"expires-at-ms": "<epoch-ts-in-millis>",
"s3.access-key-id": "<temporary-s3-access-key-id>",
"s3.session-token":"<temporary-s3-session-token>",
"s3.secret-access-key":"<temporary-secret-access-key>",
"client.region":"<aws-bucket-region-for-metadata-location>"
}
}
Le champ expires-at-ms dans la réponse indique la date d'expiration des identifiants et a une durée d'expiration default d'une heure. Pour de meilleures performances, demandez au client de mettre en cache les identifiants jusqu'à la date d'expiration avant d'en demander de nouveaux.