Conectar ao Catálogo de Dados usando o endpoint REST do Iceberg do AWS Glue - AWS Glue

Conectar ao Catálogo de Dados usando o endpoint REST do Iceberg do AWS Glue

O endpoint REST do Iceberg do AWS Glue oferece suporte a operações de API definidas na especificação REST do Apache Iceberg. Usando um cliente REST do Iceberg, é possível conectar sua aplicação em execução em um mecanismo de análise ao catálogo REST hospedado no Catálogo de Dados.

O endpoint oferece suporte às especificações v1 e v2 das tabelas do Apache Iceberg, sendo v2 a padrão. Ao usar a especificação v1 das tabelas do Iceberg, será necessário especificar v1 na chamada da API. Usando a operação da API, você é possível acessar tabelas do Iceberg residentes no armazenamento de objetos do Amazon S3 e no armazenamento de tabelas do Amazon S3.

Configuração do endpoint

É possível acessar o catálogo REST do AWS Glue Iceberg usando o endpoint do serviço. Consulte o Guia de referência dos endpoints de serviço do AWS Glue para o endpoint específico da região. Por exemplo, ao se conectar ao AWS Glue na região us-east-1, você precisará configurar a propriedade URI do endpoint da seguinte forma:

Endpoint : https://glue.us-east-1.amazonaws.com/iceberg

Propriedades de configuração adicionais: ao usar o cliente do Iceberg para conectar um mecanismo de análise como o Spark ao endpoint de serviço, é necessário especificar as seguintes propriedades de configuração da aplicação:

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()
     

O endpoint do Iceberg https://glue.us-east-1.amazonaws.com/iceberg do AWS Glue é compatível com as seguintes APIs REST do Iceberg:

  • GetConfig

  • ListNamespaces

  • CreateNamespace

  • LoadNamespaceMetadata

  • UpdateNamespaceProperties

  • DeleteNamespace

  • ListTables

  • CreateTable

  • LoadTable

  • TableExists

  • UpdateTable

  • DeleteTable

Parâmetros de prefixo e caminho do catálogo

As APIs do catálogo REST do Iceberg têm um prefixo de formato livre em seus URLs de solicitação. Por exemplo, a chamada de API ListNamespaces usa o formato de URL GET/v1/{prefix}/namespaces. O prefixo AWS Glue sempre segue a estrutura /catalogs/{catalog} para garantir que o caminho REST alinhe a hierarquia de múltiplos catálogos do AWS Glue. O parâmetro de caminho {catalog} pode ser derivado com base nas seguintes regras:

Padrão de acesso

Estilo de ID do catálogo do Glue

Estilo de prefixo

Exemplo de ID de catálogo padrão

Exemplo de rota REST

Acesar o catálogo padrão na conta atual

não obrigatório :

não aplicável

GET /v1/catalogs/:/namespaces

Acessar o catálogo padrão em uma conta específica

accountID accountID 111122223333 GET /v1/catalogs/111122223333/namespaces

Acesar um catálogo aninhado na conta atual

catalog1/catalog2

catalog1/catalog2

rmscatalog1:db1

GET /v1/catalogs/rmscatalog1:db1/namespaces

Acessar um catálogo aninhado em uma conta específica

accountId:catalog1/catalog2

accountId:catalog1/catalog2

123456789012/rmscatalog1:db1

GET /v1/catalogs/123456789012:rmscatalog1:db1/namespaces

Esse mapeamento de ID de catálogo em prefixo é necessário somente quando você chama diretamente as APIs REST. Ao trabalhar com as APIs do catálogo REST do Iceberg do AWS Glue por meio de um mecanismo, é necessário especificar o ID do catálogo do AWS Glue no parâmetro warehouse da configuração da API do catálogo REST do Iceberg ou no parâmetro glue.id da configuração da API de extensões do AWS Glue. Por exemplo, veja como você pode usá-lo com o EMR Spark em Usar um cluster do Iceberg com o Spark.

Parâmetro do caminho do namespace

Os namespaces no caminho das APIs do catálogo REST do Iceberg podem ter vários níveis. No entanto, o AWS Glue só oferece suporte a namespaces de nível único. Para acessar um namespace em uma hierarquia de catálogos de vários níveis, é possível se conectar a um catálogo de vários níveis acima do namespace para fazer referência ao namespace. Isso permite que qualquer mecanismo de consulta que suporte a notação em três partes de catalog.namespace.table acesse objetos na hierarquia de catálogos de vários níveis do AWS Glue sem problemas de compatibilidade em comparação com o uso do namespace de vários níveis.