

# Acessar o Catálogo de Dados
Acessar o Catálogo de Dados

 É possível usar o AWS Glue Data Catalog (Catálogo de Dados) para descobrir e entender seus dados. O Catálogo de Dados fornece uma maneira consistente de manter definições de esquema, tipos de dados, localizações e outros metadados. É possível acessar o Catálogo de Dados usando qualquer um dos seguintes métodos:
+ Console do AWS Glue: é possível acessar e gerenciar o Catálogo de Dados via console do AWS Glue, uma interface do usuário baseada na Web. O console permite que você navegue por e pesquise bancos de dados, tabelas e seus metadados associados, além de criar, atualizar e excluir definições de metadados. 
+ Crawler do AWS Glue: os crawlers são programas que examinam automaticamente suas fontes de dados e preenchem o Catálogo de Dados com metadados. É possível criar e executar crawlers para descobrir e catalogar dados de várias fontes, como Amazon S3, Amazon RDS, Amazon DynamoDB, Amazon CloudWatch e bancos de dados relacionais compatíveis com JDBC, como MySQL e PostgreSQL, além de várias fontes não relacionadas à AWS, como Snowflake e Google BigQuery.
+ APIs do AWS Glue: é possível acessar o catálogo de dados programaticamente usando as APIs do AWS Glue. Essas APIs permitem que você interaja com o Catálogo de Dados de forma programática, possibilitando a automação e a integração com outros serviços e aplicações. 
+ AWS Command Line Interface (AWS CLI): é possível usar a AWS CLI para acessar e gerenciar o Catálogo de Dados a partir da linha de comando. A CLI fornece comandos para criar, atualizar e excluir definições de metadados, bem como consultar e recuperar informações de metadados. 
+ Integração com outros serviços da AWS: o Catálogo de Dados se integra a vários outros serviços da AWS, permitindo que você acesse e utilize os metadados armazenados no catálogo. Por exemplo, é possível usar o Amazon Athena para consultar fontes de dados usando os metadados no catálogo de dados e usar o AWS Lake Formation para gerenciar o acesso aos dados e a governança dos recursos do Catálogo de Dados. 

**Topics**
+ [

# Conectar ao Catálogo de Dados usando o endpoint REST do Iceberg do AWS Glue
](connect-glu-iceberg-rest.md)
+ [

# Conectar ao Catálogo de Dados usando o endpoint da extensão REST do Iceberg do AWS Glue
](connect-glue-iceberg-rest-ext.md)
+ [

# APIs REST do AWS Glue para especificações do Apache Iceberg
](iceberg-rest-apis.md)
+ [

# Conectar ao Catálogo de Dados via aplicação Spark autônoma
](connect-gludc-spark.md)
+ [

# Mapeamento de dados entre o Amazon Redshift e o Amazon Iceberg
](data-mapping-rs-iceberg.md)
+ [

# Considerações e limitações ao usar APIs do catálogo REST do Iceberg do AWS Glue
](limitation-glue-iceberg-rest-api.md)

# 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](https://docs.aws.amazon.com/general/latest/gr/glue.html#glue_region) 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](https://docs.aws.amazon.com/emr/latest/ReleaseGuide/emr-iceberg-use-spark-cluster.html).

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

# Conectar ao Catálogo de Dados usando o endpoint da extensão REST do Iceberg do AWS Glue


 O endpoint da extensão REST do Iceberg do AWS Glue fornece APIs adicionais que não estão presentes na especificação REST do Apache Iceberg, além de recursos de planejamento verificação no lado do servidor. Essas APIs adicionais são usadas quando você acessa tabelas residentes no armazenamento gerenciado do Amazon Redshift. O endpoint pode ser acessado a partir de uma aplicação por meio de extensões do AWS Glue Data Catalog para Apache Iceberg. 

**Configuração do endpoint**: um catálogo com tabelas no armazenamento gerenciado do Redshift é acessível usando o endpoint de serviço. Consulte o [Guia de referência dos endpoints de serviço do AWS Glue](https://docs.aws.amazon.com/general/latest/gr/glue.html#glue_region) 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/extensions
```

```
catalog_name = "myredshiftcatalog"
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", "glue") \
    .config(f"spark.sql.catalog.{catalog_name}.glue.id", "{123456789012}:redshiftnamespacecatalog/redshiftdb") \
    .config("spark.sql.extensions","org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions") \
    .getOrCreate()
```

# APIs REST do AWS Glue para especificações do Apache Iceberg
APIs REST do AWS Glue para Apache Iceberg

Esta seção contém especificações sobre o catálogo REST do AWS Glue para Iceberg e as APIs de extensão do AWS Glue, além de considerações sobre o uso dessas APIs. 

As solicitações de API aos endpoints do AWS Glue Data Catalog são autenticadas por meio do AWS Signature Version 4 (SigV4). Consulte a seção [AWS Signature Version 4 para solicitações de API](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_sigv.html) para saber mais sobre o AWS SigV4.

Ao acessar o endpoint de serviço do AWS Glue e os metadados do AWS Glue, a aplicação assume um perfil do IAM que exige uma ação `glue:getCatalog` do IAM. 

O acesso ao Catálogo de Dados e seus objetos pode ser gerenciado usando permissões do IAM, Lake Formation ou modo híbrido do Lake Formation.

Os catálogos federados no Catálogo de Dados têm locais de dados registrados no Lake Formation. O Lake Formation trabalha com o Catálogo de Dados para fornecer permissões no estilo de banco de dados para gerenciar o acesso de usuários a objetos do Catálogo de Dados. 

É possível usar as permissões do IAM, do AWS Lake Formation ou do modo híbrido do Lake Formation para gerenciar o acesso ao Catálogo de Dados padrão e seus objetos. 

Para criar, inserir ou excluir dados em objetos gerenciados do Lake Formation, é necessário configurar permissões específicas para o usuário ou perfil do IAM. 
+ CREATE\$1CATALOG: necessária para criar catálogos 
+ CREATE\$1DATABASE: necessária para criar bancos de dados
+ CREATE\$1TABLE: necessária para criar tabelas
+ DELETE: necessária para excluir dados de uma tabela
+ DESCRIBE: necessária para ler metadados 
+ DROP: necessária para descartar/excluir uma tabela ou banco de dados
+ INSERT: necessária quando a entidade principal precisa inserir dados em uma tabela
+ SELECT: necessária quando a entidade principal precisa selecionar dados de uma tabela

Para obter mais informações, consulte [Referência de permissões do Lake Formation](https://docs.aws.amazon.com/lake-formation/latest/dg/lf-permissions-reference.html) no Guia do desenvolvedor do AWS Lake Formation.

# GetConfig



**Informações gerais**  

|  |  | 
| --- |--- |
| Nome da operação | GetConfig | 
| Tipo |  API do catálogo REST do Iceberg  | 
| Caminho REST |  GET /iceberg/v1/config  | 
| Ação do IAM |  glue:GetCatalog  | 
| Permissões do Lake Formation | Não aplicável | 
| Evento do CloudTrail |  glue:GetCatalog  | 
| Definição da Open API | https://github.com/apache/iceberg/blob/apache-iceberg-1.6.1/open-api/rest-catalog-open-api.yaml\$1L67 | 

****Considerações e limitações****
+ O parâmetro da consulta `warehouse` deve ser definido como o ID do catálogo do AWS Glue. Caso não tenha sido definido, o catálogo raiz na conta atual será usado para retornar a resposta. Para obter mais informações, consulte [Parâmetros de prefixo e caminho do catálogo](connect-glu-iceberg-rest.md#prefix-catalog-path-parameters).

# GetCatalog



**Informações gerais**  

|  |  | 
| --- |--- |
| Nome da operação | GetCatalog | 
| Tipo |  API de extensão do AWS Glue  | 
| Caminho REST |  GET/extensions/v1/catalogs/\$1catalog\$1  | 
| Ação do IAM |  glue:GetCatalog  | 
| Permissões do Lake Formation | DESCRIBE | 
| Evento do CloudTrail |  glue:GetCatalog  | 
| Definição da Open API | https://github.com/awslabs/glue-extensions-for-iceberg/blob/main/glue-extensions-api.yaml\$1L40 | 

****Considerações e limitações****
+ O parâmetro do caminho do catálogo deve seguir o estilo descrito na seção [Parâmetros de prefixo e caminho do catálogo](connect-glu-iceberg-rest.md#prefix-catalog-path-parameters).

# ListNamespaces



**Informações gerais**  

|  |  | 
| --- |--- |
| Nome da operação | ListNamespaces | 
| Tipo |  API do catálogo REST do Iceberg  | 
| Caminho REST |  GET/iceberg/v1/catalogs/\$1catalog\$1/namespaces  | 
| Ação do IAM |  glue:GetDatabase  | 
| Permissões do Lake Formation | ALL, DESCRIBE, SELECT | 
| Evento do CloudTrail |  glue:GetDatabase  | 
| Definição da Open API | https://github.com/apache/iceberg/blob/apache-iceberg-1.6.1/open-api/rest-catalog-open-api.yaml\$1L205 | 

****Considerações e limitações****
+ O parâmetro do caminho do catálogo deve seguir o estilo descrito na seção [Parâmetros de prefixo e caminho do catálogo](connect-glu-iceberg-rest.md#prefix-catalog-path-parameters).
+ Somente os namespaces do próximo nível são exibidos. Para listar namespaces em níveis mais profundos, especifique o ID do catálogo aninhado no parâmetro do caminho do catálogo.

# CreateNamespace



**Informações gerais**  

|  |  | 
| --- |--- |
| Nome da operação | CreateNamespace | 
| Tipo |  API do catálogo REST do Iceberg  | 
| Caminho REST |  POST/iceberg/v1/catalogs/\$1catalog\$1/namespaces  | 
| Ação do IAM |  glue:CreateDatabase  | 
| Permissões do Lake Formation | ALL, DESCRIBE, SELECT | 
| Evento do CloudTrail |  glue:CreateDatabase  | 
| Definição da Open API | https://github.com/apache/iceberg/blob/apache-iceberg-1.6.1/open-api/rest-catalog-open-api.yaml\$1L256 | 

****Considerações e limitações****
+ O parâmetro do caminho do catálogo deve seguir o estilo descrito na seção [Parâmetros de prefixo e caminho do catálogo](connect-glu-iceberg-rest.md#prefix-catalog-path-parameters).
+ Somente um namespace de nível único pode ser criado. Para criar um namespace de vários níveis, é necessário criar iterativamente cada nível e se conectarao nível usando o parâmetro de caminho do catálogo.

# StartCreateNamespaceTransaction



**Informações gerais**  

|  |  | 
| --- |--- |
| Nome da operação | StartCreateNamespaceTransaction | 
| Tipo |  API de extensões do AWS Glue  | 
| Caminho REST |  POST/extensions/v1/catalogs/\$1catalog\$1/namespaces  | 
| Ação do IAM |  glue:CreateDatabase  | 
| Permissões do Lake Formation | ALL, DESCRIBE, SELECT | 
| Evento do CloudTrail |  glue:CreateDatabase  | 
| Definição da Open API | https://github.com/apache/iceberg/blob/apache-iceberg-1.6.1/open-api/rest-catalog-open-api.yaml\$1L256 | 

****Considerações e limitações****
+ O parâmetro do caminho do catálogo deve seguir o estilo descrito na seção [Parâmetros de prefixo e caminho do catálogo](connect-glu-iceberg-rest.md#prefix-catalog-path-parameters).
+ É possível criar somente um namespace de nível único. Para criar namespaces de vários níveis, é necessário criar cada nível de forma iterativa e conectar-se ao nível usando o parâmetro de caminho do catálogo.
+ A API é assíncrona e retorna um ID de transação que você pode usar para rastreamento usando a chamada de API `CheckTransactionStatus`.
+  Você poderá chamar essa API somente se a chamada de API `GetCatalog` contiver o parâmetro `use-extensions=true` na resposta. 

## LoadNamespaceMetadata



**Informações gerais**  

|  |  | 
| --- |--- |
| Nome da operação | LoadNamespaceMetadata | 
| Tipo |  API do catálogo REST do Iceberg  | 
| Caminho REST |  GET/iceberg/v1/catalogs/\$1catalog\$1/namespaces/\$1ns\$1  | 
| Ação do IAM |  glue:GetDatabase  | 
| Permissões do Lake Formation | ALL, DESCRIBE, SELECT | 
| Evento do CloudTrail |  glue:GetDatabase  | 
| Definição da Open API | https://github.com/apache/iceberg/blob/apache-iceberg-1.6.1/open-api/rest-catalog-open-api.yaml\$1L302 | 

****Considerações e limitações****
+ O parâmetro do caminho do catálogo deve seguir o estilo descrito na seção [Parâmetros de prefixo e caminho do catálogo](connect-glu-iceberg-rest.md#prefix-catalog-path-parameters).
+ É possível especificar somente um namespace de nível único no parâmetro REST Path. Para obter mais informações, consulte a seção [Parâmetro do caminho do namespace](connect-glu-iceberg-rest.md#ns-path-param).

## UpdateNamespaceProperties



**Informações gerais**  

|  |  | 
| --- |--- |
| Nome da operação | UpdateNamespaceProperties | 
| Tipo |  API do catálogo REST do Iceberg  | 
| Caminho REST |  POST /iceberg/v1/catalogs/\$1catalog\$1/namespaces/\$1ns\$1/properties  | 
| Ação do IAM |  glue:UpdateDatabase  | 
| Permissões do Lake Formation | ALL, ALTER | 
| Evento do CloudTrail |  glue:UpdateDatabase  | 
| Definição da Open API | https://github.com/apache/iceberg/blob/apache-iceberg-1.6.1/open-api/rest-catalog-open-api.yaml\$1L400 | 

****Considerações e limitações****
+ O parâmetro do caminho do catálogo deve seguir o estilo descrito na seção [Parâmetros de prefixo e caminho do catálogo](connect-glu-iceberg-rest.md#prefix-catalog-path-parameters).
+ É possível especificar somente um namespace de nível único no parâmetro REST Path. Para obter mais informações, consulte a seção [Parâmetro do caminho do namespace](connect-glu-iceberg-rest.md#ns-path-param).

# DeleteNamespace



**Informações gerais**  

|  |  | 
| --- |--- |
| Nome da operação | DeleteNamespace | 
| Tipo |  API do catálogo REST do Iceberg  | 
| Caminho REST |  DELETE/iceberg/v1/catalogs/\$1catalog\$1/namespces/\$1ns\$1  | 
| Ação do IAM |  glue:DeleteDatabase  | 
| Permissões do Lake Formation | ALL, DROP | 
| Evento do CloudTrail |  glue:DeleteDatabase  | 
| Definição da Open API | https://github.com/apache/iceberg/blob/apache-iceberg-1.6.1/open-api/rest-catalog-open-api.yaml\$1L365 | 

****Considerações e limitações****
+ O parâmetro do caminho do catálogo deve seguir o estilo descrito na seção [Parâmetros de prefixo e caminho do catálogo](connect-glu-iceberg-rest.md#prefix-catalog-path-parameters).
+ É possível especificar somente um namespace de nível único no parâmetro REST Path. Para obter mais informações, consulte a seção [Parâmetro do caminho do namespace](connect-glu-iceberg-rest.md#ns-path-param).
+ Se houver objetos no banco de dados, a operação falhará.
+ A API é assíncrona e retorna um ID de transação que você pode usar para rastreamento usando a chamada de API `CheckTransactionStatus`.
+  A API só poderá ser usada se a chamada de API `GetCatalog` indicar `use-extensions=true` na resposta. 

# StartDeleteNamespaceTransaction



**Informações gerais**  

|  |  | 
| --- |--- |
| Nome da operação | StartDeleteNamespaceTransaction | 
| Tipo |  API de extensões do AWS Glue  | 
| Caminho REST |  DELETE /extensions/v1/catalogs/\$1catalog\$1/namespces/\$1ns\$1  | 
| Ação do IAM |  glue:DeleteDatabase  | 
| Permissões do Lake Formation | ALL, DROP | 
| Evento do CloudTrail |  glue:DeleteDatabase  | 
| Definição da Open API | https://github.com/awslabs/glue-extensions-for-iceberg/blob/main/glue-extensions-api.yaml\$1L85 | 

****Considerações e limitações****
+ O parâmetro do caminho do catálogo deve seguir o estilo descrito na seção [Parâmetros de prefixo e caminho do catálogo](connect-glu-iceberg-rest.md#prefix-catalog-path-parameters).
+ É possível especificar somente um namespace de nível único no parâmetro REST Path. Para obter mais informações, consulte a seção [Parâmetro do caminho do namespace](connect-glu-iceberg-rest.md#ns-path-param).
+ Se houver objetos no banco de dados, a operação falhará.
+ A API é assíncrona e retorna um ID de transação que você pode usar para rastreamento usando a chamada de API `CheckTransactionStatus`.
+  A API só poderá ser usada se a chamada de API `GetCatalog` indicar `use-extensions=true` na resposta. 

# ListTables



**Informações gerais**  

|  |  | 
| --- |--- |
| Nome da operação | ListTables | 
| Tipo |  API do catálogo REST do Iceberg  | 
| Caminho REST |  GET /iceberg/v1/catalogs/\$1catalog\$1/namespaces/\$1ns\$1/tables  | 
| Ação do IAM |  glue:GetTables  | 
| Permissões do Lake Formation | ALL, SELECT, DESCRIBE | 
| Evento do CloudTrail |  glue:GetTables  | 
| Definição da Open API | https://github.com/apache/iceberg/blob/apache-iceberg-1.6.1/open-api/rest-catalog-open-api.yaml\$1L463 | 

****Considerações e limitações****
+ O parâmetro do caminho do catálogo deve seguir o estilo descrito na seção [Parâmetros de prefixo e caminho do catálogo](connect-glu-iceberg-rest.md#prefix-catalog-path-parameters).
+ É possível especificar somente um namespace de nível único no parâmetro REST Path. Para obter mais informações, consulte a seção [Parâmetro do caminho do namespace](connect-glu-iceberg-rest.md#ns-path-param).
+ Todas as tabelas, incluindo tabelas não Iceberg, serão listadas. Para determinar se uma tabela pode ser carregada como uma tabela Iceberg ou não, chame a operação `LoadTable`.

# CreateTable



**Informações gerais**  

|  |  | 
| --- |--- |
| Nome da operação | CreateTable | 
| Tipo |  API do catálogo REST do Iceberg  | 
| Caminho REST |  GET /iceberg/v1/catalogs/\$1catalog\$1/namespaces/\$1ns\$1/tables  | 
| Ação do IAM |  glue:CreateTable  | 
| Permissões do Lake Formation | ALL, CREATE\$1TABLE | 
| Evento do CloudTrail |  glue:CreateTable  | 
| Definição da Open API | https://github.com/apache/iceberg/blob/apache-iceberg-1.6.1/open-api/rest-catalog-open-api.yaml\$1L497 | 

****Considerações e limitações****
+ O parâmetro do caminho do catálogo deve seguir o estilo descrito na seção [Parâmetros de prefixo e caminho do catálogo](connect-glu-iceberg-rest.md#prefix-catalog-path-parameters).
+ É possível especificar somente um namespace de nível único no parâmetro REST Path. Para obter mais informações, consulte a seção [Parâmetro do caminho do namespace](connect-glu-iceberg-rest.md#ns-path-param).
+ Não há suporte a `CreateTable` com preparação. Se o parâmetro de consulta `stageCreate` for especificado, a operação falhará. Isso significa que operações como `CREATE TABLE AS SELECT` não são permitidas, e você poderá usar uma combinação de `CREATE TABLE` e `INSERT INTO` como alternativa.
+ A operação `CreateTable` da API não oferece suporte à opção `state-create = TRUE`.

# StartCreateTableTransaction



**Informações gerais**  

|  |  | 
| --- |--- |
| Nome da operação | CreateTable | 
| Tipo |  API de extensões do AWS Glue  | 
| Caminho REST |  POST/extensions/v1/catalogs/\$1catalog\$1/namespaces/\$1ns\$1/tables  | 
| Ação do IAM |  glue:CreateTable  | 
| Permissões do Lake Formation | ALL, CREATE\$1TABLE | 
| Evento do CloudTrail |  glue:CreateTable  | 
| Definição da Open API | https://github.com/awslabs/glue-extensions-for-iceberg/blob/main/glue-extensions-api.yaml\$1L107 | 

****Considerações e limitações****
+ O parâmetro do caminho do catálogo deve seguir o estilo descrito na seção [Parâmetros de prefixo e caminho do catálogo](connect-glu-iceberg-rest.md#prefix-catalog-path-parameters).
+ É possível especificar somente um namespace de nível único no parâmetro REST Path. Para obter mais informações, consulte a seção [Parâmetro do caminho do namespace](connect-glu-iceberg-rest.md#ns-path-param).
+ Não há suporte a `CreateTable` com preparação. Se o parâmetro de consulta `stageCreate` for especificado, a operação falhará. Isso significa que não há suporte a operações como `CREATE TABLE AS SELECT`, e o usuário deve usar uma combinação de `CREATE TABLE` e `INSERT INTO` como solução alternativa.
+ A API é assíncrona e retorna um ID de transação que você pode usar para rastreamento usando a chamada de API `CheckTransactionStatus`.
+  A API só poderá ser usada se a chamada de API `GetCatalog` indicar `use-extensions=true` na resposta. 

# LoadTable



**Informações gerais**  

|  |  | 
| --- |--- |
| Nome da operação | LoadTable | 
| Tipo |  API do catálogo REST do Iceberg  | 
| Caminho REST |  GET /iceberg/v1/catalogs/\$1catalog\$1/namespaces/\$1ns\$1/tables/\$1table\$1  | 
| Ação do IAM |  glue:GetTable  | 
| Permissões do Lake Formation | ALL, SELECT, DESCRIBE | 
| evento do CloudTrail |  glue:GetTable  | 
| Definição da Open API | https://github.com/apache/iceberg/blob/apache-iceberg-1.6.1/open-api/rest-catalog-open-api.yaml\$1L616 | 

**Considerações**
+ O parâmetro do caminho do catálogo deve seguir o estilo descrito na seção [Parâmetros de prefixo e caminho do catálogo](connect-glu-iceberg-rest.md#prefix-catalog-path-parameters).
+ É possível especificar somente um namespace de nível único no parâmetro REST Path. Para obter mais informações, consulte a seção [Parâmetro do caminho do namespace](connect-glu-iceberg-rest.md#ns-path-param).
+ Não há suporte a `CreateTable` com preparação. Se o parâmetro de consulta `stageCreate` for especificado, a operação falhará. Isso significa que não há suporte a operações como `CREATE TABLE AS SELECT`, e o usuário deve usar uma combinação de `CREATE TABLE` e `INSERT INTO` como solução alternativa.
+ A API é assíncrona e retorna um ID de transação que você pode usar para rastreamento usando a chamada de API `CheckTransactionStatus`.
+  A API só poderá ser usada se a chamada de API `GetCatalog` indicar `use-extensions=true` na resposta. 

# ExtendedLoadTable



**Informações gerais**  

|  |  | 
| --- |--- |
| Nome da operação | LoadTable | 
| Tipo |  API de extensões do AWS Glue  | 
| Caminho REST |  GET /extensions/v1/catalogs/\$1catalog\$1/namespaces/\$1ns\$1/tables/\$1table\$1  | 
| Ação do IAM |  glue:GetTable  | 
| Permissões do Lake Formation | ALL, SELECT, DESCRIBE | 
| Evento do CloudTrail |  glue:GetTable  | 
| Definição da Open API | https://github.com/awslabs/glue-extensions-for-iceberg/blob/main/glue-extensions-api.yaml\$1L134 | 

**Considerações**
+ O parâmetro do caminho do catálogo deve seguir o estilo descrito na seção [Parâmetros de prefixo e caminho do catálogo](connect-glu-iceberg-rest.md#prefix-catalog-path-parameters).
+ É possível especificar somente um namespace de nível único no parâmetro REST Path. Para obter mais informações, consulte a seção [Parâmetro do caminho do namespace](connect-glu-iceberg-rest.md#ns-path-param).
+ Somente o modo `all` é suportado para o parâmetro de consulta de snapshots.
+ Em comparação com a API `LoadTable`, a API `ExtendedLoadTable` difere das seguintes formas:
  +  Não impõe estritamente que todos os campos estejam disponíveis.
  + Fornece os seguintes parâmetros adicionais no campo de configuração da resposta:   
**Parâmetros adicionais**    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/glue/latest/dg/extended-load-table.html)

# PreplanTable



**Informações gerais**  

|  |  | 
| --- |--- |
| Nome da operação | PreplanTable | 
| Tipo |  API de extensões do AWS Glue  | 
| Caminho REST |  POST /extensions/v1/catalogs/\$1catalog\$1/namespaces/\$1ns\$1/tables/\$1table\$1/preplan  | 
| Ação do IAM |  glue:GetTable  | 
| Permissões do Lake Formation | ALL, SELECT, DESCRIBE | 
| Evento do CloudTrail |  glue:GetTable  | 
| Definição da Open API | https://github.com/awslabs/glue-extensions-for-iceberg/blob/main/glue-extensions-api.yaml\$1L211 | 

**Considerações**
+ O parâmetro do caminho do catálogo deve seguir o estilo descrito na seção [Parâmetros de prefixo e caminho do catálogo](connect-glu-iceberg-rest.md#prefix-catalog-path-parameters).
+ É possível especificar somente um namespace de nível único no parâmetro REST Path. Para obter mais informações, consulte a seção [Parâmetro do caminho do namespace](connect-glu-iceberg-rest.md#ns-path-param).
+ O chamador dessa API deve sempre determinar se ainda há resultados a serem buscados com base no token da página. Uma resposta com um item de página vazio, mas um token de paginação, será possível se o lado do servidor ainda estiver processando, mas não for capaz de produzir nenhum resultado no tempo de resposta determinado.
+  Você poderá usar essa API somente se a resposta da API `ExtendedLoadTable` contiver `aws.server-side-capabilities.scan-planning=true`. 

# PlanTable



**Informações gerais**  

|  |  | 
| --- |--- |
| Nome da operação | PlanTable | 
| Tipo |  API de extensões do AWS Glue  | 
| Caminho REST |  POST /extensions/v1/catalogs/\$1catalog\$1/namespaces/\$1ns\$1/tables/\$1table\$1/plan  | 
| Ação do IAM |  glue:GetTable  | 
| Permissões do Lake Formation | ALL, SELECT, DESCRIBE | 
| Evento do CloudTrail |  glue:GetTable  | 
| Definição da Open API | https://github.com/awslabs/glue-extensions-for-iceberg/blob/main/glue-extensions-api.yaml\$1L243 | 

**Considerações**
+ O parâmetro do caminho do catálogo deve seguir o estilo descrito na seção [Parâmetros de prefixo e caminho do catálogo](connect-glu-iceberg-rest.md#prefix-catalog-path-parameters).
+ É possível especificar somente um namespace de nível único no parâmetro REST Path. Para obter mais informações, consulte a seção [Parâmetro do caminho do namespace](connect-glu-iceberg-rest.md#ns-path-param).
+ O chamador dessa API deve sempre determinar se ainda há resultados a serem buscados com base no token da página. Uma resposta com um item de página vazio, mas um token de paginação, será possível se o lado do servidor ainda estiver processando, mas não for capaz de produzir nenhum resultado no tempo de resposta determinado.
+  Você poderá usar essa API somente se a resposta da API `ExtendedLoadTable` contiver `aws.server-side-capabilities.scan-planning=true`. 

# TableExists



**Informações gerais**  

|  |  | 
| --- |--- |
| Nome da operação | TableExists | 
| Tipo |  API do catálogo REST do Iceberg  | 
| Caminho REST |  HEAD/iceberg/v1/catalogs/\$1catalog\$1/namespaces/\$1ns\$1/tables/\$1table\$1  | 
| Ação do IAM |  glue:GetTable  | 
| Permissões do Lake Formation | ALL, SELECT, DESCRIBE | 
| Evento do CloudTrail |  glue:GetTable  | 
| Definição da Open API | https://github.com/apache/iceberg/blob/apache-iceberg-1.6.1/open-api/rest-catalog-open-api.yaml\$1L833 | 

**Considerações**
+ O parâmetro do caminho do catálogo deve seguir o estilo descrito na seção [Parâmetros de prefixo e caminho do catálogo](connect-glu-iceberg-rest.md#prefix-catalog-path-parameters).
+ É possível especificar somente um namespace de nível único no parâmetro REST Path. Para obter mais informações, consulte a seção [Parâmetro do caminho do namespace](connect-glu-iceberg-rest.md#ns-path-param).

# UpdateTable



**Informações gerais**  

|  |  | 
| --- |--- |
| Nome da operação | UpdateTable | 
| Tipo |  API do catálogo REST do Iceberg  | 
| Caminho REST |  POST /iceberg/v1/catalogs/\$1catalog\$1/namespaces/\$1ns\$1/tables/\$1table\$1  | 
| Ação do IAM |  glue:UpdateTable  | 
| Permissões do Lake Formation | ALL, ALTER | 
| Evento do CloudTrail |  glue:UpdateTable  | 
| Definição da Open API | https://github.com/apache/iceberg/blob/apache-iceberg-1.6.1/open-api/rest-catalog-open-api.yaml\$1L677 | 

**Considerações**
+ O parâmetro do caminho do catálogo deve seguir o estilo descrito na seção [Parâmetros de prefixo e caminho do catálogo](connect-glu-iceberg-rest.md#prefix-catalog-path-parameters).
+ É possível especificar somente um namespace de nível único no parâmetro REST Path. Para obter mais informações, consulte a seção [Parâmetro do caminho do namespace](connect-glu-iceberg-rest.md#ns-path-param).

# StartUpdateTableTransaction



**Informações gerais**  

|  |  | 
| --- |--- |
| Nome da operação | StartUpdateTableTransaction | 
| Tipo | API de extensão do AWS Glue | 
| Caminho REST |  POST/extensions/v1/catalogs/\$1catalog\$1/namespaces/\$1ns\$1/tables/\$1table\$1  | 
| Ação do IAM |  glue:UpdateTable  | 
| Permissões do Lake Formation |  ALL, ALTER  | 
| Evento do CloudTrail |  glue:UpdateTable  | 
| Definição da Open API | https://github.com/awslabs/glue-extensions-for-iceberg/blob/main/glue-extensions-api.yaml\$1L154 | 

**Considerações**
+ O parâmetro do caminho do catálogo deve seguir o estilo descrito na seção [Parâmetros de prefixo e caminho do catálogo](connect-glu-iceberg-rest.md#prefix-catalog-path-parameters).
+ É possível especificar somente um namespace de nível único no parâmetro REST Path. Para obter mais informações, consulte a seção [Parâmetro do caminho do namespace](connect-glu-iceberg-rest.md#ns-path-param).
+ A API é assíncrona e retorna um ID de transação que você pode usar para rastreamento usando a chamada de API `CheckTransactionStatus`.
+  Uma operação `RenamTable` também pode ser executada por meio dessa API. Quando isso acontece, o chamador também deve ter a permissão glue:CreateTable ou CREATE\$1TABLE do LakeFormation para que a tabela seja renomeada. 
+  Você poderá usar essa API somente se a resposta da API `ExtendedLoadTable` contiver `aws.server-side-capabilities.scan-planning=true`. 

# DeleteTable



**Informações gerais**  

|  |  | 
| --- |--- |
| Nome da operação | DeleteTable | 
| Tipo |  API do catálogo REST do Iceberg  | 
| Caminho REST |  DELETE/iceberg/v1/catalogs/\$1catalog\$1/namespaces/\$1ns\$1/tables/\$1table\$1  | 
| Ação do IAM |  glue:DeleteTable  | 
| Permissões do Lake Formation | ALL, DROP | 
| Evento do CloudTrail |  glue:DeleteTable  | 
| Definição da Open API | https://github.com/apache/iceberg/blob/apache-iceberg-1.6.1/open-api/rest-catalog-open-api.yaml\$1L793 | 

**Considerações**
+ O parâmetro do caminho do catálogo deve seguir o estilo descrito na seção [Parâmetros de prefixo e caminho do catálogo](connect-glu-iceberg-rest.md#prefix-catalog-path-parameters).
+ É possível especificar somente um namespace de nível único no parâmetro REST Path. Para obter mais informações, consulte a seção [Parâmetro do caminho do namespace](connect-glu-iceberg-rest.md#ns-path-param).
+ A operação da API `DeleteTable` oferece suporte a uma opção de expurgo. Quando a limpeza é definida como `true`, os dados da tabela são excluídos, caso contrário, os dados não são excluídos. Para tabelas no Amazon S3, a operação não exclui dados da tabela. A operação falha quando a tabela está armazenada no Amazon S3 e `purge = TRUE,`. 

  Para tabelas que estão no armazenamento gerenciado do Amazon Redshift, a operação excluirá os dados da tabela, semelhante ao comportamento de `DROP TABLE` no Amazon Redshift. A operação falha quando a tabela está armazenada no Amazon Redshift e `purge = FALSE`.
+ Não há suporte ao `purgeRequest=true`. 

# StartDeleteTableTransaction



**Informações gerais**  

|  |  | 
| --- |--- |
| Nome da operação | StartDeleteTableTransaction | 
| Tipo |  API de extensões do AWS Glue  | 
| Caminho REST |  DELETE /extensions/v1/catalogs/\$1catalog\$1/namespaces/\$1ns\$1/tables/\$1table\$1  | 
| Ação do IAM |  glue:DeleteTable  | 
| Permissões do Lake Formation | ALL, DROP | 
| Evento do CloudTrail |  glue:DeleteTable  | 
| Definição da Open API | https://github.com/apache/iceberg/blob/apache-iceberg-1.6.1/open-api/rest-catalog-open-api.yaml\$1L793 | 

**Considerações**
+ O parâmetro do caminho do catálogo deve seguir o estilo descrito na seção [Parâmetros de prefixo e caminho do catálogo](connect-glu-iceberg-rest.md#prefix-catalog-path-parameters).
+ É possível especificar somente um namespace de nível único no parâmetro REST Path. Para obter mais informações, consulte a seção [Parâmetro do caminho do namespace](connect-glu-iceberg-rest.md#ns-path-param).
+ Não há suporte ao `purgeRequest=false`. 
+  A API é assíncrona e retorna um ID de transação que pode ser rastreado via `CheckTransactionStatus`. 

# CheckTransactionStatus



**Informações gerais**  

|  |  | 
| --- |--- |
| Nome da operação | CheckTransactionStatus | 
| Tipo |  API de extensões do AWS Glue  | 
| Caminho REST |  POST/extensions/v1/transactions/status  | 
| Ação do IAM |  A mesma permissão da ação que inicia a transação  | 
| Permissões do Lake Formation | A mesma permissão da ação que inicia a transação | 
| Definição da Open API | https://github.com/awslabs/glue-extensions-for-iceberg/blob/main/glue-extensions-api.yaml\$1L273 | 

**Considerações**
+ O parâmetro do caminho do catálogo deve seguir o estilo descrito na seção [Parâmetros de prefixo e caminho do catálogo](connect-glu-iceberg-rest.md#prefix-catalog-path-parameters).

# Conectar ao Catálogo de Dados via aplicação Spark autônoma


É possível se conectar ao Catálogo de Dados por meio de uma aplicação autônoma usando um conector do Apache Iceberg. 

1. Crie um perfil do IAM para a aplicação Spark.

1. Conecte-se ao endpoint REST do Iceberg do AWS Glue usando o conector do Iceberg.

   ```
   # configure your application. Refer to https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-envvars.html for best practices on configuring environment variables.
   export AWS_ACCESS_KEY_ID=$(aws configure get appUser.aws_access_key_id)
   export AWS_SECRET_ACCESS_KEY=$(aws configure get appUser.aws_secret_access_key)
   export AWS_SESSION_TOKEN=$(aws configure get appUser.aws_secret_token)
   
   export AWS_REGION=us-east-1
   export REGION=us-east-1
   export AWS_ACCOUNT_ID = {specify your aws account id here}
   
   ~/spark-3.5.3-bin-hadoop3/bin/spark-shell \
       --packages org.apache.iceberg:iceberg-spark-runtime-3.4_2.12:1.6.0 \
       --conf "spark.sql.extensions=org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions" \
       --conf "spark.sql.defaultCatalog=spark_catalog" \
       --conf "spark.sql.catalog.spark_catalog=org.apache.iceberg.spark.SparkCatalog" \
       --conf "spark.sql.catalog.spark_catalog.type=rest" \
       --conf "spark.sql.catalog.spark_catalog.uri=https://glue.us-east-1.amazonaws.com/iceberg" \
       --conf "spark.sql.catalog.spark_catalog.warehouse = {AWS_ACCOUNT_ID}" \
       --conf "spark.sql.catalog.spark_catalog.rest.sigv4-enabled=true" \
       --conf "spark.sql.catalog.spark_catalog.rest.signing-name=glue" \
       --conf "spark.sql.catalog.spark_catalog.rest.signing-region=us-east-1" \
       --conf "spark.sql.catalog.spark_catalog.io-impl=org.apache.iceberg.aws.s3.S3FileIO" \
       --conf "spark.hadoop.fs.s3a.aws.credentials.provider=org.apache.hadoop.fs.s3a.SimpleAWSCredentialProvider"
   ```

1. Consulte os dados no Catálogo de Dados.

   ```
   spark.sql("create database myicebergdb").show()
   spark.sql("""CREATE TABLE myicebergdb.mytbl (name string) USING iceberg location 's3://bucket_name/mytbl'""")
   spark.sql("insert into myicebergdb.mytbl values('demo') ").show()
   ```

# Mapeamento de dados entre o Amazon Redshift e o Amazon Iceberg


O Redshift e o Iceberg oferecem suporte a vários tipos de dados. A matriz de compatibilidade a seguir descreve o suporte e as limitações ao mapear dados entre esses dois sistemas de dados. Consulte os [Tipos de dados do Amazon Redshift](https://docs.aws.amazon.com/redshift/latest/dg/c_Supported_data_types.html) e as [Especificações de tabelas do Apache Iceberg](https://iceberg.apache.org/spec/#primitive-types) para obter mais detalhes sobre os tipos de dados compatíveis nos respectivos sistemas de dados.


| Tipo de dados do Redshift | Aliases | Tipo de dados do Iceberg | 
| --- | --- | --- | 
| SMALLINT | INT2 | int | 
| INTEGER | INT, INT4 | int | 
| BIGINT | INT8 | longo | 
| DECIMAL | NUMERIC | decimal | 
| REAL | FLOAT4 | flutuação | 
| REAL | FLOAT4 | flutuação | 
| DOUBLE PRECISION | FLOAT8, FLOAT | double | 
| CHAR | CHARACTER, NCHAR | string | 
| VARCHAR | CHARACTER VARYING, NVARCHAR | string | 
| BPCHAR |  | string | 
| TEXT |  | string | 
| DATE |  | date | 
| TIME | TIME WITHOUT TIMEZONE | horário | 
| TIME | TIME WITH TIMEZONE | não compatível | 
| TIMESTAMP | TIMESTAMP WITHOUT TIMEZONE | TIMESTAMP | 
| TIMESTAMPZ | TIMESTAMP WITH TIMEZONE | TIMESTAMPZ | 
| INTERVALO ENTRE UM ANO E UM MÊS |  | Não compatível | 
| INTERVALO ENTRE UM DIA E UM SEGUNDO |  | Não compatível | 
| BOOLEAN | BOOL | bool | 
| HLLSKETCH |  | Não compatível | 
| SUPER |  | Não compatível | 
| VARBYTE | VARBINARY, BINARY VARYING | binary | 
| GEOMETRY |  | Não compatível | 
| GEOGRAPHY |  | Não compatível | 

# Considerações e limitações ao usar APIs do catálogo REST do Iceberg do AWS Glue


A seguir estão as considerações e limitações aplicáveis usar o comportamento de operação da linguagem de definição de dados (DDL) do Catálogo de Dados REST do Apache Iceberg.

**Considerações**
+  **Comportamento da API `RenameTable`**: a operação `RenameTable` é válida em tabelas no Amazon Redshift, mas não no Amazon S3. 
+  **Operações de DDL para namespaces e tabelas no Amazon Redshift**: as operações de criação, atualização e exclusão de namespaces e tabelas no Amazon Redshift são operações assíncronas porque dependem de quando o grupo de trabalho gerenciado do Amazon Redshift está disponível e se uma transação conflitante de DDL e DML está em andamento e a operação precisa aguardar o bloqueio e, em seguida, tentar confirmar as alterações. 

**Limitações**
+  As APIs de visualização na especificação REST do Apache Iceberg não são aceitas no catálogo REST do Iceberg do AWS Glue. 