0

J'utilise le spectre Redhshift. J'ai créé une table externe et téléchargé un fichier de données CSV sur S3 avec environ 5,5 millions d'enregistrements. Si vous lancez une requête sur cette table externe, cela prend ~ 15 secondes alors que si j'exécute la même requête sur Amazon redshift, j'obtiendrais le même résultat dans ~ 2 secondes. Quelle pourrait être la raison de ce retard de performance où AWS prétend être une plate-forme très haute performance. Veuillez suggérer une solution pour la même performance en utilisant le spectre.Problèmes de performances avec Redshift Spectrum

+1

Je n'ai pas beaucoup d'expérience avec Redshift Spectrum, mais cela semble parfaitement raisonnable? La différence est que Redshift est soutenu par des disques durs d'instance ou EBS, et Spectrum s'exécute sur S3. Je ne m'attendrais pas à ce qu'ils soient comparables. Spectrm est conçu pour les analyses PB et supérieures, ce qui ne serait même pas possible dans Redshift ou Hadoop. – Henry

Répondre

2

Pour vos optimisations de performances, veuillez consulter http://docs.aws.amazon.com/redshift/latest/dg/c-spectrum-external-performance.html pour comprendre votre requête.

À l'heure actuelle, la meilleure performance est si vous n'avez pas un seul fichier CSV mais plusieurs. Généralement, vous pouvez dire que vous obtenez des performances exceptionnelles si le nombre de fichiers par requête est supérieur d'un ordre de grandeur au nombre de nœuds de votre cluster. En outre, si vous utilisez des fichiers Parquet, vous bénéficiez d'un format en colonnes sur S3 plutôt que d'une lecture CSV qui lira le fichier entier à partir de S3 - et réduira également vos coûts.

Vous pouvez utiliser le script suivant pour convertir des données en parquet:

https://github.com/awslabs/aws-big-data-blog/tree/master/aws-blog-spark-parquet-conversion

+0

Existe-t-il un convertisseur csv to Parquet en ligne? –

+0

Vous pouvez essayer ceci: https://github.com/awslabs/aws-big-data-blog/tree/master/aws-blog-spark-parquet-conversion – grundprinzip

0

Ces résultats sont à prévoir. La raison d'être d'Amazon Redshift réside dans le fait qu'il stocke les données de manière hautement optimisée pour fournir des requêtes rapides. Les données stockées en dehors de Redshift ne seront pas aussi rapides.

L'objectif d'Amazon Redshift Spectrum est de fournir un accès aux données stockées dans Amazon S3 sans avoir à le charger dans Redshift (similaire à Amazon Athena), mais cela ne garantit pas les performances.

1

Je suis un peu en retard pour répondre à cette question. Depuis février 2018, AWS prend en charge les requêtes AWS Spectrum sur les fichiers dans des formats colonnaires tels que Parquet, ORC, etc. Dans votre cas, vous stockez le fichier en tant que .CSV. Le format CSV est basé sur une ligne, ce qui entraîne l'extraction de la ligne entière pour tout champ interrogé. Je vais vous suggérer de convertir les fichiers de .csv en format Parquet avant d'interroger. Cela entraînera certainement des performances beaucoup plus rapides. Détails d'AWS au https://aws.amazon.com/redshift/spectrum/

+0

Spectrify peut être utile pour cela: https: // github .com/hellonarrativ/spectrify –