Lanzamiento de su pila de AWS CloudFormation y, a continuación, consulta de sus datos en Amazon S3 - Amazon Redshift

Lanzamiento de su pila de AWS CloudFormation y, a continuación, consulta de sus datos en Amazon S3

Una vez que haya creado un clúster de Amazon Redshift y se haya conectado a él, podrá instalar su plantilla DataLake de AWS CloudFormation de Redshift Spectrum y, a continuación, consultar sus datos.

CloudFormation instala la plantilla DataLake de Introducción a Redshift Spectrum y crea una pila que comprende lo siguiente:

  • un rol denominado myspectrum_role asociado a su clúster de Redshift

  • un esquema externo denominado myspectrum_schema

  • una tabla externa denominada sales en un bucket de Amazon S3

  • una tabla de Redshift denominada event con datos cargados

Para lanzar la pila DataLake de CloudFormation de Introducción a Redshift Spectrum.
  1. Elija Launch CFN stack (Lanzar pila de CFN). La consola de CloudFormation se abre con la plantilla Datalake.yml seleccionada.

    También puede descargar y personalizar la plantilla CFN de introducción a DataLake CloudFormation de Redshift Spectrum y, después, abrir la consola de CloudFormation (https://console.aws.amazon.com/cloudformation) y crear una pila con la plantilla personalizada.

  2. Elija Next (Siguiente).

  3. En la opción Parameters (Parámetros), ingrese el nombre del clúster de Amazon Redshift, el nombre de la base de datos y su correspondiente nombre de usuario.

  4. Elija Next (Siguiente).

    Aparecerán las opciones de la pila.

  5. Elija Next (Siguiente) para aceptar la configuración predeterminada.

  6. Revise la información y, en la opción Capabilities (Capacidades), elija I acknowledge that AWS CloudFormation might create IAM resources (Acepto que CFN podría crear recursos de IAM).

  7. Seleccione Crear pila.

Si se produce un error durante la creación de la pila, consulte la siguiente información:

  • Consulte la pestaña Events (Eventos) de CloudFormation para obtener información que pueda serle de utilidad para resolver el error.

  • Elimine la pila DataLake de CloudFormation antes de reintentar la operación.

  • Asegúrese de que se ha conectado a su base de datos de Amazon Redshift.

  • Asegúrese de que ingresó la información adecuada relativa al nombre del clúster de Amazon Redshift, el nombre de la base de datos y su correspondiente nombre de usuario.

Consulta de sus datos en Amazon S3

Las tablas externas se consultan con las mismas instrucciones SELECT que se utilizan para hacerlo con otras tablas de Amazon Redshift. Estas consultas de la instrucción SELECT incluyen tablas combinadas, datos de agregación y filtrado de predicados.

La siguiente consulta devuelve la cantidad de filas de la tabla externa myspectrum_schema.sales.

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

Combinación de una tabla externa con una tabla local

En el siguiente ejemplo, se combina la tabla externa myspectrum_schema.sales con la tabla local event para obtener el total de ventas de los 10 eventos principales.

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

Visualización del plan de consulta

Vea el plan de consulta de la consulta anterior. Tenga en cuenta los pasos S3 Seq Scan, S3 HashAggregate y S3 Query Scan que se ejecutaron sobre los datos de 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)