Best practice per l'utilizzo di Amazon Redshift Spectrum - AWS Guida prescrittiva

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Best practice per l'utilizzo di Amazon Redshift Spectrum

Questa sezione fornisce una panoramica delle best practice per l'utilizzo di Amazon Redshift Spectrum. Ti consigliamo di seguire queste best practice per ottenere prestazioni ottimali quando utilizzi Redshift Spectrum:

  • Considerate che i tipi di file hanno un'influenza significativa sulle prestazioni delle query di Redshift Spectrum. Per migliorare le prestazioni, utilizzate file con codifica colonnare come ORC o Parquet e utilizzate il formato CSV solo per tabelle di dimensioni molto piccole.

  • Utilizzate il partizionamento basato sul prefisso per trarre vantaggio dall'eliminazione delle partizioni. Ciò significa utilizzare filtri collegati alle partizioni del data lake.

  • Redshift Spectrum si ridimensiona automaticamente per elaborare richieste di grandi dimensioni, quindi esegui il più possibile in Redshift Spectrum (ad esempio, predicate pushdown).

  • Presta attenzione ai file di partizione su colonne filtrate di frequente. Se i dati vengono partizionati in base a una o più colonne filtrate, Redshift Spectrum può sfruttare l'eliminazione delle partizioni e saltare la scansione di partizioni e file non necessari. In genere, si partizionano i dati in base a criteri temporali.

  • È possibile verificare l'efficacia delle partizioni e l'efficienza della query Redshift Spectrum utilizzando la seguente query.

    Select query, segment, max(assigned_partitions) as total_partitions, max(qualified_partitions) as qualified_partitions From svl_s3partition Where query=pg_last_query_id() Group by 1,2;

    La query precedente mostra quanto segue:

    • total_partitions — Il numero di partizioni riconosciute da AWS Glue Data Catalog

    • qualified_partitions — Il numero di prefissi su Amazon Simple Storage Service (Amazon S3) a cui si accede per la query Redshift Spectrum

  • Puoi anche controllare la tabella di SVL_S3QUERY_SUMMARY sistema per scoprire l'efficacia delle tue partizioni e l'efficienza della tua query Redshift Spectrum. A tale scopo, utilizza la dichiarazione seguente.

    Select * From svl_s3query_summary Where query=pg_last_query_id();

    La query precedente restituisce ancora più informazioni is_partitioneds3_scanned_rows/bytes, tra cui s3_returned_rows/bytes valori oltre ai file che mostrano l'efficienza dell'eliminazione delle partizioni.

Pushdown dei predicati in Redshift Spectrum

L'uso del predicate pushdown evita il consumo di risorse nel cluster Amazon Redshift. È possibile trasferire molte operazioni SQL al livello Redshift Spectrum. Ti consigliamo di approfittarne laddove possibile.

Ricorda:

  • È possibile valutare alcuni tipi di operazioni SQL completamente all'interno del livello Redshift Spectrum, tra cui:

    • GROUP BYclausole

    • Condizioni di confronto e di corrispondenza dei modelli (ad esempio,) LIKE

    • Funzioni aggregate (ad esempio,, COUNT SUMAVG, MIN e) MAX

    • regex_replace, to_upperdate_trunc, e altre funzioni

  • Non è possibile inviare alcune operazioni al livello Redshift Spectrum, tra cui DISTINCT e. ORDER BY Se possibile, esegui ORDER BY solo al livello più alto della query, poiché l'ordinamento viene eseguito nel nodo principale.

  • Esamina il tuo EXPLAIN piano di interrogazione per verificare se il predicate pushdown è efficace. Per trovare le porzioni di Redshift Spectrum in un EXPLAIN comando, segui questi passaggi:

    • S3 Seq Scan

    • S3 HashAggregate

    • S3 Query Scan

    • Seq Scan PartitionInfo

    • Partition Loop

  • Usa il minor numero di colonne nella tua query. Redshift Spectrum può eliminare le colonne per la scansione se i dati sono in formato Parquet o ORC.

  • Fate ampio uso delle partizioni per l'elaborazione parallela e l'eliminazione delle partizioni e mantenete le dimensioni dei file ad almeno 64 MB, se possibile.

  • Imposta TABLE PROPERTIES 'numRows'='nnn' se usi CREATE EXTERNAL TABLE o. ALTER TABLE Amazon Redshift non analizza tabelle esterne per generare statistiche sulle tabelle utilizzate dall'ottimizzatore di query per generare un piano di query. Se le statistiche non sono impostate, Amazon Redshift presuppone che le tabelle esterne siano le tabelle più grandi e le tabelle locali siano le tabelle più piccole.

Suggerimenti per l'ottimizzazione delle query per Redshift Spectrum

Ti consigliamo di tenere presente quanto segue quando ottimizzi le tue query:

  • Il numero di nodi Redshift Spectrum che il tuo cluster Amazon Redshift può utilizzare per una query è legato al numero di slice nel cluster.

  • Il ridimensionamento del cluster può avvantaggiare i profili di elaborazione locali, i profili di storage e le funzionalità di query della query del data lake Amazon S3.

  • Il pianificatore di query di Amazon Redshift, quando possibile, trasmette i predicati e le aggregazioni al livello di query di Redshift Spectrum.

  • Quando da Amazon S3 sono restituite grandi quantità di dati, l'elaborazione è limitata dalle risorse del cluster.

  • Poiché Redshift Spectrum si ridimensiona automaticamente per elaborare richieste di grandi dimensioni, le prestazioni complessive migliorano ogni volta che è possibile trasferire l'elaborazione al livello Redshift Spectrum.