Iniciar a pilha do AWS CloudFormation e consultar seus dados no Amazon S3 - Amazon Redshift

Iniciar a pilha do AWS CloudFormation e consultar seus dados no Amazon S3

Depois de criar um cluster do Amazon Redshift e se conectar ao cluster, você pode instalar o template do AWS CloudFormation Redshift Spectrum DataLake e consultar seus dados.

O CloudFormation instala o modelo Redshift Spectrum Getting Started DataLake e cria uma pilha contendo:

  • Uma função chamada myspectrum_role associada ao cluster do Redshift

  • Um esquema externo chamado myspectrum_schema

  • Uma tabela externa chamada sales em um bucket do Amazon S3

  • Uma tabela do Redshift chamada event carregada com dados

Para iniciar sua pilha Redshift Spectrum Getting Started DataLake CloudFormation
  1. Selecione Launch CFN stack (Iniciar pilha do CFN). O console do CloudFormation abrirá com o modelo Datalake.yml selecionado.

    Você também pode baixar e personalizar o modelo do CFN, depois abrir o console do CloudFormation (https://console.aws.amazon.com/cloudformation) e criar uma pilha com o modelo personalizado.

  2. Escolha Próximo.

  3. Em Parameters (Parâmetros), digite o nome do cluster do Amazon Redshift, o nome do banco de dados e o nome de usuário do banco de dados.

  4. Escolha Próximo.

    São exibidas as opções de pilha.

  5. Selecione Next (Próximo) para aceitar as configurações padrão.

  6. Revise as informações e, em Recursos, selecione Estou ciente de que o AWS CloudFormation pode criar recursos do IAM.

  7. Selecione Criar pilha.

Se ocorrer um erro durante a criação da pilha, consulte estas informações:

  • Acesse a guia Events (Eventos) do CloudFormation para obter informações que podem ajudar você a solucionar o erro.

  • Exclua a pilha do DataLake CloudFormation antes de tentar a realizar a operação novamente.

  • Verifique se você está conectado ao banco de dados do Amazon Redshift.

  • Verifique se inseriu as informações corretas do nome do cluster, nome do banco de dados e nome de usuário do banco de dados do Amazon Redshift.

Consultar seus dados no Amazon S3

Consulte tabelas externas usando as mesmas instruções SELECT usadas nas consultas de outras tabelas do Amazon Redshift. Essas consultas com instruções SELECT incluem junções de tabelas, agregação de dados e filtragem de predicados.

A consulta a seguir retorna o número de linhas na tabela externa myspectrum_schema.sales.

select count(*) from myspectrum_schema.sales;
count 
------
172462

Unir uma tabela externa com uma tabela local

O exemplo a seguir une a tabela externa myspectrum_schema.sales e a tabela local event para encontrar as vendas totais para os 10 eventos principais.

select top 10 myspectrum_schema.sales.eventid, sum(myspectrum_schema.sales.pricepaid) from myspectrum_schema.sales, event where myspectrum_schema.sales.eventid = event.eventid and myspectrum_schema.sales.pricepaid > 30 group by myspectrum_schema.sales.eventid order by 2 desc;
eventid | sum     
--------+---------
    289 | 51846.00
   7895 | 51049.00
   1602 | 50301.00
    851 | 49956.00
   7315 | 49823.00
   6471 | 47997.00
   2118 | 47863.00
    984 | 46780.00
   7851 | 46661.00
   5638 | 46280.00

Visualizar o plano de consulta

Visualize o plano da consulta para a consulta anterior. Observe que as etapas S3 Seq Scan, S3 HashAggregate e S3 Query Scan foram executadas com os dados do Amazon S3.

explain select top 10 myspectrum_schema.sales.eventid, sum(myspectrum_schema.sales.pricepaid) from myspectrum_schema.sales, event where myspectrum_schema.sales.eventid = event.eventid and myspectrum_schema.sales.pricepaid > 30 group by myspectrum_schema.sales.eventid order by 2 desc;
QUERY PLAN ----------------------------------------------------------------------------- XN Limit (cost=1001055770628.63..1001055770628.65 rows=10 width=31) -> XN Merge (cost=1001055770628.63..1001055770629.13 rows=200 width=31) Merge Key: sum(sales.derived_col2) -> XN Network (cost=1001055770628.63..1001055770629.13 rows=200 width=31) Send to leader -> XN Sort (cost=1001055770628.63..1001055770629.13 rows=200 width=31) Sort Key: sum(sales.derived_col2) -> XN HashAggregate (cost=1055770620.49..1055770620.99 rows=200 width=31) -> XN Hash Join DS_BCAST_INNER (cost=3119.97..1055769620.49 rows=200000 width=31) Hash Cond: ("outer".derived_col1 = "inner".eventid) -> XN S3 Query Scan sales (cost=3010.00..5010.50 rows=200000 width=31) -> S3 HashAggregate (cost=3010.00..3010.50 rows=200000 width=16) -> S3 Seq Scan spectrum.sales location:"s3://redshift-downloads/tickit/spectrum/sales" format:TEXT (cost=0.00..2150.00 rows=172000 width=16) Filter: (pricepaid > 30.00) -> XN Hash (cost=87.98..87.98 rows=8798 width=4) -> XN Seq Scan on event (cost=0.00..87.98 rows=8798 width=4)