Connexion au catalogue de données à l’aide du point de terminaison REST Iceberg AWS Glue - AWS Glue

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/iceberg

Proprié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.us-east-1.amazonaws.com/iceberg prend en charge les API REST Iceberg suivantes :

  • 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.