

 O Amazon Redshift não permitirá mais a criação de UDFs do Python a partir do Patch 198. As UDFs do Python existentes continuarão a funcionar normalmente até 30 de junho de 2026. Para ter mais informações, consulte a [publicação de blog ](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/). 

# Esquemas externos no Amazon Redshift Spectrum
<a name="c-spectrum-external-schemas"></a>

Este tópico descreve como criar e usar esquemas externos com o Redshift Spectrum. Esquemas externos são coleções de tabelas que você usa como referência para acessar dados fora do cluster do Amazon Redshift. Essas tabelas contêm metadados sobre os dados externos que o Redshift Spectrum lê.

Todas as tabelas externas devem ser criadas em um esquema externo, o qual você cria usando a instrução [CREATE EXTERNAL SCHEMA](r_CREATE_EXTERNAL_SCHEMA.md). 

**nota**  
Alguns aplicativos usam os termos *banco de dados* e *esquema* de maneira intercambiável. No Amazon Redshift, usamos o termo *esquema*. 

Um esquema externo do Amazon Redshift faz referência a um banco de dados externo em um catálogo de dados externo. Você pode criar o banco de dados externo no Amazon Redshift, no [Amazon Athena](https://docs.aws.amazon.com/athena/latest/ug/catalog.html), no [AWS Glue Data Catalog](https://docs.aws.amazon.com/glue/latest/dg/components-overview.html#data-catalog-intro) ou em uma metastore do Apache Hive, como o [Amazon EMR](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-what-is-emr.html). Quando você cria um banco de dados externo no Amazon Redshift, o banco de dados reside no catálogo de dados do Athena. Para criar um banco de dados em uma metastore do Hive, é necessário criar o banco de dados na aplicação do Hive.

O Amazon Redshift precisa de autorização para acessar o catálogo de dados no Athena e os arquivos de dados no Amazon S3 em seu nome. Para fornecer essa autorização, crie primeiro uma função do AWS Identity and Access Management (IAM). Em seguida, anexe a função ao seu cluster e forneça o nome do recurso da Amazon (ARN) para a função na instrução `CREATE EXTERNAL SCHEMA` do Amazon Redshift. Para obter mais informações sobre a autorização da , consulte [Políticas do IAM do Amazon Redshift Spectrum](c-spectrum-iam-policies.md).

Para criar um banco de dados externo ao mesmo tempo que o esquema externo é criado, especifique `FROM DATA CATALOG` e inclua a cláusula `CREATE EXTERNAL DATABASE` na instrução `CREATE EXTERNAL SCHEMA`. 

O exemplo a seguir cria um esquema externo denominado `spectrum_schema` usando o banco de dados externo `spectrum_db`.

```
create external schema spectrum_schema from data catalog 
database 'spectrum_db' 
iam_role 'arn:aws:iam::123456789012:role/MySpectrumRole'
create external database if not exists;
```

Se você gerencia o catálogo de dados usando o Athena, especifique o nome do banco de dados do Athena e a região da AWS na qual o catálogo de dados do Athena está localizado. 

O exemplo a seguir cria um esquema externo usando o banco de dados padrão `sampledb` no catálogo de dados do Athena.

```
create external schema athena_schema from data catalog 
database 'sampledb' 
iam_role 'arn:aws:iam::123456789012:role/MySpectrumRole' 
region 'us-east-2';
```

**nota**  
O parâmetro `region` faz referência à região da AWS em que o catálogo de dados do Athena está localizado, e não à localização dos arquivos de dados no Amazon S3.

Se você gerencia o catálogo de dados usando uma metastore do Hive, como o Amazon EMR, seus grupos de segurança devem ser configurados para permitir o tráfego entre os clusters. 

Na instrução CREATE EXTERNAL SCHEMA, especifique `FROM HIVE METASTORE` e inclua o URI e o número da porta da metastore. O exemplo a seguir cria um esquema externo usando um banco de dados do metastore do Hive denominado `hive_db`.

```
create external schema hive_schema
from hive metastore
database 'hive_db'
uri '172.10.10.10' port 99
iam_role 'arn:aws:iam::123456789012:role/MySpectrumRole'
```

Para visualizar os esquemas externos do seu cluster, consulte a tabela do catálogo PG\$1EXTERNAL\$1SCHEMA ou a exibição SVV\$1EXTERNAL\$1SCHEMAS. O exemplo a seguir consulta a SVV\$1EXTERNAL\$1SCHEMAS, que une as tabelas PG\$1EXTERNAL\$1SCHEMA e PG\$1NAMESPACE.

```
select * from svv_external_schemas
```

Para ver a sintaxe completa do comando e os exemplos, consulte [CREATE EXTERNAL SCHEMA](r_CREATE_EXTERNAL_SCHEMA.md).

## Trabalhar com catálogos externos no Amazon Redshift Spectrum
<a name="c-spectrum-external-catalogs"></a>

Os metadados dos bancos de dados externos e as tabelas externas do Amazon Redshift Spectrum são armazenados em um catálogo de dados externos. Por padrão, os metadados do Redshift Spectrum são armazenados em um catálogo de dados do Athena. É possível visualizar e gerenciar os bancos de dados e as tabelas do Redshift Spectrum no console do Athena. 

Também é possível criar e gerenciar bancos de dados externos e tabelas externas usando a linguagem de definição de dados (DDL) do Hive por meio do Athena ou de uma metastore do Hive, como o Amazon EMR. 

**nota**  
Recomendamos o uso do Amazon Redshift para criar e gerenciar os bancos de dados externos e as tabelas externas no Redshift Spectrum.

### Visualizar bancos de dados do Redshift Spectrum no Athena e no AWS Glue
<a name="c-spectrum-athena-external-catalogs"></a>

Você pode criar um banco de dados externo incluindo a cláusula CREATE EXTERNAL DATABASE IF NOT EXISTS como parte da instrução CREATE EXTERNAL SCHEMA. Nesses casos, os metadados do banco de dados externo é armazenado em seu catálogo de dados. Os metadados das tabelas externas criadas que são qualificadas pelo esquema externo também são armazenados no catálogo de dados do . 

O Athena e o AWS Glue mantêm um catálogo de dados para cada Região da AWS compatível. Para exibir os metadados da tabela, faça login no Athena ou no console do AWS Glue. No Athena, escolha **Data sources** (Fontes de dados) e seu AWS Glue e visualize os detalhes do banco de dados. No AWS Glue, escolha **Databases** (Bancos de dados) e seu banco de dados externo e visualize os respectivos detalhes. 

Se você cria e gerencia suas tabelas externas usando o Athena, registre o banco de dados com CREATE EXTERNAL SCHEMA. Por exemplo, o comando a seguir registra o banco de dados do Athena denominado `sampledb`.

```
create external schema athena_sample
from data catalog
database 'sampledb'
iam_role 'arn:aws:iam::123456789012:role/mySpectrumRole'
region 'us-east-1';
```

Ao consultar a exibição de sistema SVV\$1EXTERNAL\$1TABLES, você vê as tabelas no banco de dados `sampledb` do Athena, além das tabelas que criou no Amazon Redshift.

```
select * from svv_external_tables;
```

```
schemaname    | tablename        | location                                               
--------------+------------------+--------------------------------------------------------
athena_sample | elb_logs         | s3://athena-examples/elb/plaintext           
athena_sample | lineitem_1t_csv  | s3://myspectrum/tpch/1000/lineitem_csv                
athena_sample | lineitem_1t_part | s3://myspectrum/tpch/1000/lineitem_partition          
spectrum      | sales            | s3://redshift-downloads/tickit/spectrum/sales          
spectrum      | sales_part       | s3://redshift-downloads/tickit/spectrum/sales_part
```

### Registro de um banco de dados da metastore do Apache Hive
<a name="c-spectrum-hive-metastore"></a>

Ao criar tabelas externas em uma metastore do Apache Hive, você pode usar CREATE EXTERNAL SCHEMA para registrar essas tabelas no Redshift Spectrum. 

Na instrução CREATE EXTERNAL SCHEMA, especifique a cláusula FROM HIVE METASTORE e forneça o URI e o número da porta da metastore do Hive. A função do IAM deve incluir uma permissão para acessar o Amazon S3, mas não precisa de nenhuma permissão para o Athena. O exemplo a seguir registra uma metastore do Hive. 

```
create external schema if not exists hive_schema
from hive metastore
database 'hive_database'
uri 'ip-10-0-111-111.us-west-2.compute.internal' port 9083 
iam_role 'arn:aws:iam::123456789012:role/mySpectrumRole';
```

### Ativar o cluster do Amazon Redshift para acessar o cluster do Amazon EMR
<a name="c-spectrum-enabling-emr-access"></a>

Se a metastore do Hive estiver no Amazon EMR, você deverá conceder ao cluster do Amazon Redshift acesso ao cluster do Amazon EMR. Para isso, crie um grupo de segurança do Amazon EC2. Depois, permita todo o tráfego de entrada para esse grupo de segurança do EC2 recebido do grupo de segurança do cluster do Amazon Redshift e do grupo de segurança do cluster do Amazon EMR. Em seguida, adicione a segurança do EC2 a ambos os clusters do Amazon Redshift e do Amazon EMR.

**Visualizar o nome do grupo de segurança no cluster do Amazon Redshift**

Para exibir o grupo de segurança, faça o seguinte:

1. Faça login no Console de gerenciamento da AWS e abra o console do Amazon Redshift em [https://console.aws.amazon.com/redshiftv2/](https://console.aws.amazon.com/redshiftv2/).

1. No menu de navegação, escolha **Clusters**. Em seguida, escolha o cluster na lista para abrir os respectivos detalhes.

1. Escolha **Properties** (Propriedades) e visualize a seção **Network and security** (Rede e segurança). 

1. Encontre seu grupo de segurança em **VPC security group** (Grupo de segurança da VPC) e anote. 

****

**Visualizar o nome do grupo de segurança do nó principal do Amazon EMR**

1. Abra o cluster do Amazon EMR. Para obter mais informações, consulte [Usar configurações de segurança para definir a segurança do cluster](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-security-configurations.html) no *Guia de gerenciamento do Amazon EMR*.

1. Em **Security and access** (Segurança e acesso), anote o nome do grupo de segurança do nó principal do Amazon EMR.  
![\[Uma captura de tela realçando o nome do grupo de segurança do nó principal do Amazon EMR no console do Amazon EMR.\]](http://docs.aws.amazon.com/pt_br/redshift/latest/dg/images/spectrum-emr-security-groups.png)

**Para criar ou modificar um grupo de segurança do Amazon EC2 para permitir a conexão entre o Amazon Redshift e o Amazon EMR**

1. No painel do Amazon EC2, escolha **Security Groups** (Grupos de segurança). Consulte mais informações em [Regras de grupos de segurança](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/security-group-rules.html) no *Guia do usuário do Amazon EC2*. 

1. Escolha **Criar grupo de segurança**. 

1. Se estiver usando a VPC, escolha a VPC na qual os clusters do Amazon Redshift e do Amazon EMR se encontram. 

1. Adicione uma regra de entrada. 

   1. Em **Type (Tipo)**, escolha **Custom TCP (TCP personalizada)**. 

   1. Em **Source**, escolha **Custom**. 

   1. Insira o nome de seu grupo de segurança do Amazon Redshift. 

1. Adicione uma outra regra de entrada. 

   1. Para **Type**, escolha **TCP**. 

   1. Em **Port Range (Intervalo de portas)**, insira **9083**.
**nota**  
A porta padrão para um HMS no EMR é 9083. Se o HMS usa uma porta diferente, especifique essa porta na regra de entrada e na definição do esquema externo. 

   1. Em **Source**, escolha **Custom**. 

1. Insira o nome e a descrição do grupo de segurança. 

1. Escolha **Criar grupo de segurança**. 

**Para adicionar o grupo de segurança do Amazon EC2 que você criou na etapa anterior ao cluster do Amazon Redshift e ao cluster do Amazon EMR**

1. No Amazon Redshift, escolha seu cluster. 

1. Escolha **Properties**. 

1. Visualize a seção **Network and security** (Rede e segurança) e escolha **Edit** (Editar). 

1. Em **VPC security group** (Grupo de segurança da VPC), escolha o novo nome do grupo de segurança. 

1. Escolha **Salvar alterações**. 

**Para adicionar o grupo de segurança do Amazon EC2 ao cluster do Amazon EMR**

1. No Amazon EMR, escolha seu cluster. Para obter mais informações, consulte [Usar configurações de segurança para definir a segurança do cluster](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-security-configurations.html) no *Guia de gerenciamento do Amazon EMR*.

1. Em **Hardware**, escolha o link para o nó principal. 

1. Escolha o link na coluna **EC2 Instance ID** (ID da instância do EC2).   
![\[Uma captura de tela realçando um valor do ID de instância do Amazon EC2 no console do Amazon EMR.\]](http://docs.aws.amazon.com/pt_br/redshift/latest/dg/images/spectrum-emr-add-security-group.png)

1. Escolha **Actions** (Ações), **Security** (Segurança) e **Change security groups** (Alterar grupos de segurança). 

1. Em **Associated sercurity groups** (Grupos de segurança associados), escolha o novo grupo de segurança e escolha **Add security group** (Adicionar grupo de segurança). 

1. Escolha **Salvar**. 