Connexion au catalogue de données à l’aide du point de terminaison REST Iceberg AWS Glue
Le point de terminaison REST Iceberg d’AWS Glue prend en charge les opérations API spécifiées dans la spécification REST Apache Iceberg. À l’aide d’un client REST Iceberg, vous pouvez connecter votre application exécutée sur un moteur analytique au catalogue REST hébergé dans le catalogue de données.
Le point de terminaison prend en charge les deux spécifications des tables Apache Iceberg : v1 et v2, la valeur par défaut étant v2. Lorsque vous utilisez la spécification de la table Iceberg v1, vous devez spécifier v1 dans l’appel d’API. À l’aide de l’opération d’API, vous pouvez accéder aux tables Iceberg stockées à la fois dans le stockage d’objets Amazon S3 et dans le stockage de tableaux Amazon S3.
Configuration du point de terminaison
Vous pouvez accéder au catalogue REST Iceberg AWS Glue à l’aide du point de terminaison du service. Reportez-vous au guide de référence des points de terminaison de service AWS Glue pour le point de terminaison spécifique à la région. Par exemple, lorsque vous vous connectez à AWS Glue dans la région us-east-1, vous devez configurer la propriété d’URI du point de terminaison comme suit :
Endpoint : https://glue.us-east-1.amazonaws.com/icebergPropriétés de configuration supplémentaires : lorsque vous utilisez le client Iceberg pour connecter un moteur d’analytique tel que Spark au point de terminaison du service, vous devez indiquer les propriétés de configuration d’application suivantes :
catalog_name ="mydatacatalog"aws_account_id ="123456789012"aws_region = "us-east-1" spark = SparkSession.builder \ ... \ .config("spark.sql.defaultCatalog", catalog_name) \ .config(f"spark.sql.catalog.{catalog_name}", "org.apache.iceberg.spark.SparkCatalog") \ .config(f"spark.sql.catalog.{catalog_name}.type", "rest") \ .config(f"spark.sql.catalog.{catalog_name}.uri", "https://glue.{aws_region}.amazonaws.com/iceberg") \ .config(f"spark.sql.catalog.{catalog_name}.warehouse", "{aws_account_id}") \ .config(f"spark.sql.catalog.{catalog_name}.rest.sigv4-enabled", "true") \ .config(f"spark.sql.catalog.{catalog_name}.rest.signing-name", "glue") \ .config("spark.sql.extensions","org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions") \ .getOrCreate()
Le point de terminaison Iceberg AWS Glue https://glue. prend en charge les API REST Iceberg suivantes :us-east-1.amazonaws.com/iceberg
-
GetConfig
-
ListNamespaces
-
CreateNamespace
-
LoadNamespaceMetadata
-
UpdateNamespaceProperties
-
DeleteNamespace
-
ListTables
-
CreateTable
-
LoadTable
-
TableExists.
-
UpdateTable
-
DeleteTable
Paramètres du chemin d’accès au préfixe et au catalogue
Les API du catalogue REST Iceberg contiennent un préfixe de forme libre dans leurs URL de demande. Par exemple, l’appel d’API ListNamespaces utilise le format d’URL GET/v1/{prefix}/namespaces. Le préfixe AWS Glue suit toujours la structure /catalogs/{catalog} pour garantir que le chemin REST corresponde à la hiérarchie de catalogues multiples AWS Glue. Le paramètre de chemin {catalog} peut être dérivé en fonction des règles suivantes :
| Modèle d’accès |
Style d’ID du catalogue Glue |
Style de préfixe |
Exemple d’ID de catalogue par défaut |
Exemple de route REST |
|---|---|---|---|---|
|
Accéder au catalogue par défaut dans le compte actuel |
facultatif | : |
ne s’applique pas |
GET /v1/catalogs/:/namespaces |
|
Accéder au catalogue par défaut dans un compte spécifique |
accountID | accountID | 111122223333 | GET /v1/catalogs/111122223333/namespaces |
|
Accéder à un catalogue imbriqué dans le compte actuel |
catalog1/catalog2 |
catalog1/catalog2 |
rmscatalog1:db1 |
GET /v1/catalogs/rmscatalog1:db1/namespaces |
|
Accéder à un catalogue imbriqué dans un compte spécifique |
accountId:catalog1/catalog2 |
accountId:catalog1/catalog2 |
123456789012/rmscatalog1:db1 |
GET /v1/catalogs/123456789012:rmscatalog1:db1/namespaces |
Le mappage de cet ID de catalogue vers le préfixe n’est requis que lorsque vous appelez directement les API REST. Lorsque vous travaillez avec les API du catalogue REST Iceberg AWS Glue via un moteur, vous devez spécifier l’ID du catalogue AWS Glue dans le paramètre warehouse de votre réglage d’API de catalogue REST Iceberg ou dans le paramètre glue.id pour votre réglage d’API d’extensions AWS Glue. Par exemple, découvrez comment vous pouvez l’utiliser avec EMR Spark dans Use an Iceberg cluster with Spark.
Paramètre de chemin d’accès à l’espace de noms
Les espaces de noms du chemin d’accès aux API du catalogue REST Iceberg peuvent comporter plusieurs niveaux. Toutefois, AWS Glue ne prend en charge que les espaces de noms à un seul niveau. Pour accéder à un espace de noms dans une hiérarchie de catalogue à plusieurs niveaux, vous pouvez vous connecter à un catalogue à plusieurs niveaux situé au-dessus de l’espace de noms pour référencer l’espace de noms. Cela permet à tout moteur de requête qui prend en charge la notation en trois parties de catalog.namespace.table d’accéder aux objets de la hiérarchie du catalogue à plusieurs niveaux d’AWS Glue sans problèmes de compatibilité par rapport à l’utilisation de l’espace de noms à plusieurs niveaux.