Lancez votre AWS CloudFormation stack, puis interrogez vos données dans Amazon S3 - Amazon Redshift

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Lancez votre AWS CloudFormation stack, puis interrogez vos données dans Amazon S3

Une fois que vous avez créé un cluster Amazon Redshift et que vous vous y êtes connecté, vous pouvez installer votre DataLake AWS CloudFormation modèle Redshift Spectrum, puis interroger vos données.

CloudFormation installe le modèle Redshift Spectrum Getting DataLake Started et crée une pile contenant les éléments suivants :

  • Un rôle nommé myspectrum_role associé à votre cluster Redshift

  • Un schéma externe nommé myspectrum_schema

  • Une table externe nommée sales dans un compartiment Amazon S3

  • Une table Redshift nommée event chargée de données

Pour lancer votre stack Redshift Spectrum Getting Started DataLake CloudFormation
  1. Choisissez Launch CFN stack (Lancer la pile CFN). La CloudFormation console s'ouvre avec le modèle DataLake .yml sélectionné.

    Vous pouvez également télécharger et personnaliser le modèle DataLake CloudFormation CFN Redshift Spectrum Getting Started, puis ouvrir CloudFormation la console (https://console.aws.amazon.com/cloudformation) et créer une pile avec le modèle personnalisé.

  2. Choisissez Suivant.

  3. Sous Parameters (Paramètres), saisissez le nom du cluster Amazon Redshift, le nom de base de données et le nom d’utilisateur de votre base de données.

  4. Choisissez Suivant.

    Les options de pile apparaissent.

  5. Choisissez Next (Suivant) pour accepter les paramètres par défaut.

  6. Passez en revue les informations et sous Fonctionnalités, puis sélectionnez Je reconnais que cela AWS CloudFormation pourrait créer des ressources IAM.

  7. Sélectionnez Créer la pile.

Si une erreur se produit pendant la création de la pile, consultez les informations suivantes :

  • Consultez l'onglet CloudFormation Événements pour obtenir des informations qui peuvent vous aider à résoudre l'erreur.

  • Supprimez la DataLake CloudFormation pile avant de recommencer l'opération.

  • Assurez-vous que vous êtes connecté à votre base de données Amazon Redshift.

  • Assurez-vous d’avoir saisi les informations correctes pour le nom de cluster Amazon Redshift, le nom de base de données et le nom d’utilisateur de la base de données.

Interrogation de vos données dans Amazon S3

Vous interrogez les tables externes à l’aide des mêmes instructions SELECT que vous utilisez pour interroger d’autres tables Amazon Redshift. Ces requêtes d’instruction SELECT incluent la jonction des tables, le regroupement des données et le filtrage des prédicats.

La requête suivante renvoie le nombre de lignes dans la table externe myspectrum_schema.sales.

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

Joindre une table externe à une table locale

L’exemple suivant joint la table externe myspectrum_schema.sales à la table locale event afin de déterminer le total des ventes pour les 10 principaux événements.

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

Affichage du plan de requête

Affichez le plan de la requête précédente. Observez les étapes S3 Seq Scan, S3 HashAggregate et S3 Query Scan qui ont été exécutées par rapport aux données sur 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)