Esquemas externos no Amazon Redshift Spectrum - Amazon Redshift

Esquemas externos no Amazon Redshift Spectrum

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.

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, no AWS Glue Data Catalog ou em uma metastore do Apache Hive, como o Amazon EMR. 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, consulte Políticas do IAM do Amazon Redshift Spectrum.

nota

Se você tiver tabelas externas do Redshift Spectrum no catálogo de dados do Athena, poderá migrar o catálogo de dados do Athena para um catálogo de dados do AWS Glue. Para usar o AWS Glue Data Catalog com o Redshift Spectrum, talvez seja necessário alterar as políticas do IAM. Para obter mais informações, consulte Atualizar para o catálogo de dados do AWS Glue no Manual do usuário do Amazon Athena.

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_EXTERNAL_SCHEMA ou a exibição SVV_EXTERNAL_SCHEMAS. O exemplo a seguir consulta a SVV_EXTERNAL_SCHEMAS, que une as tabelas PG_EXTERNAL_SCHEMA e PG_NAMESPACE.

select * from svv_external_schemas

Para ver a sintaxe completa do comando e os exemplos, consulte CREATE EXTERNAL SCHEMA.

Trabalhar com catálogos externos no Amazon Redshift Spectrum

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

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_EXTERNAL_TABLES, 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

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

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 AWS Management Console e abra o console do Amazon Redshift em https://console.aws.amazon.com/redshiftv2/.

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

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

  4. 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 no Guia de gerenciamento do Amazon EMR.

  2. 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.
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 no Guia do usuário do Amazon EC2.

  2. Escolha Create security group (Criar grupo de segurança).

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

  4. Adicione uma regra de entrada.

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

    2. Em Source, escolha Custom.

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

  5. Adicione uma outra regra de entrada.

    1. Para Type, escolha TCP.

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

    3. Em Source, escolha Custom.

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

  7. Escolha Create security group (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.

  2. Escolha Properties (Propriedades).

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

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

  5. 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 no Guia de gerenciamento do Amazon EMR.

  2. Em Hardware, escolha o link para o nó principal.

  3. 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.
  4. Escolha Actions (Ações), Security (Segurança) e Change security groups (Alterar grupos de segurança).

  5. 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).

  6. Escolha Salvar.