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à.
Architecture
Il diagramma seguente illustra l'architettura della soluzione descritta in questa guida. Un AWS Glue job legge i dati da un bucket Amazon Simple Storage Service (Amazon S3), un servizio di storage di oggetti basato sul cloud che consente di archiviare, proteggere e recuperare i dati. Puoi avviare il AWS GlueSpark SQL processo tramite, () o l'API Console di gestione AWS.AWS Command Line InterfaceAWS CLI AWS Glue Il AWS Glue Spark SQL job elabora i dati grezzi in un bucket Amazon S3 e quindi archivia i dati elaborati in un bucket diverso.
A scopo esemplificativo, questa guida descrive un AWS GlueSpark SQLlavoro di base, che è scritto in Python and Spark SQL ()PySpark. Questo AWS Glue lavoro viene utilizzato per dimostrare le migliori pratiche per il Spark SQL tuning. Sebbene questa guida sia incentrata su AWS Glue, le best practice contenute in questa guida si applicano anche ai lavori in Amazon EMR. Spark SQL
Il diagramma seguente illustra il ciclo di vita di una query. Spark SQL Spark SQLCatalyst Optimizer genera un piano di interrogazione. Un piano di query è una serie di passaggi, come le istruzioni, utilizzati per accedere ai dati in un sistema di database relazionale SQL. Per sviluppare un piano di Spark
SQL query ottimizzato per le prestazioni, il primo passaggio consiste nel visualizzare il EXPLAIN piano, interpretarlo e quindi ottimizzarlo. È possibile utilizzare l'interfaccia Spark SQL utente (UI) o l'Spark SQLHistory Server per visualizzare il piano.
SparkCatalyst Optimizer converte il piano di query iniziale in un piano di query ottimizzato come segue:
-
API di analisi e dichiarative: la fase di analisi è il primo passo. Il piano logico irrisolto, in cui gli oggetti a cui si fa riferimento nella query SQL non sono noti o non corrispondono a una tabella di input, viene generato con attributi e tipi di dati non associati. Spark SQLCatalyst Optimizer applica quindi una serie di regole per creare un piano logico. Il parser SQL può generare un SQL Abstract Syntax Tree (AST) e fornirlo come input per il piano logico. L'input potrebbe anche essere un frame di dati o un oggetto set di dati costruito utilizzando un'API. La tabella seguente mostra quando è necessario utilizzare SQL, frame di dati o set di dati.
SQL Frame di dati Set di dati Errori di sintassi Runtime Tempo di compilazione Tempo di compilazione Errori di analisi Runtime Runtime Tempo di compilazione Per ulteriori informazioni sui tipi di input, consulta quanto segue:
-
Un'API per set di dati fornisce una versione tipizzata. Ciò riduce le prestazioni a causa della forte dipendenza dalle funzioni lambda definite dall'utente. RDD o i set di dati vengono tipizzati staticamente. Ad esempio, quando si definisce un RDD, è necessario fornire esplicitamente la definizione dello schema.
-
Un'API di frame di dati fornisce operazioni relazionali non tipizzate. I frame di dati vengono tipizzati dinamicamente. Analogamente a RDD, quando si definisce un frame di dati, lo schema rimane lo stesso. I dati sono ancora strutturati. Tuttavia, queste informazioni sono disponibili solo in fase di esecuzione. Ciò consente al compilatore di scrivere SQL-like istruzioni e definire nuove colonne al volo. Ad esempio, può aggiungere colonne a un frame di dati esistente senza dover definire una nuova classe per ogni operazione.
-
Una Spark SQL query viene valutata per rilevare eventuali errori di sintassi e analisi durante l'esecuzione, il che garantisce tempi di esecuzione più rapidi.
-
-
Catalogo: Spark SQLviene utilizzato Apache Hive Metastore (HMS) per gestire i metadati di entità relazionali persistenti, come database, tabelle, colonne e partizioni.
-
Ottimizzazione: l'ottimizzatore riscrive il piano di query utilizzando l'euristica e i costi. Fa quanto segue per produrre un piano logico ottimizzato:
-
Prunes (colonne)
-
Spinge verso il basso i predicati
-
Riordina i join
-
-
Piani fisici e pianificatore: Spark SQL Catalyst Optimizer converte il piano logico in una serie di piani fisici. Ciò significa che converte il cosa in come.
-
Piani fisici selezionati: Spark SQL Catalyst Optimizer seleziona il piano fisico più conveniente.
-
Piano di query ottimizzato: esegue il piano di query ottimizzato in termini di Spark SQL prestazioni e costi. Spark SQL La gestione della memoria tiene traccia dell'utilizzo della memoria e la distribuisce tra attività e operatori. Il motore Spark SQL Tungsten può migliorare notevolmente l'efficienza della memoria e della CPU per le applicazioni. Spark SQL Implementa inoltre l'elaborazione di modelli di dati binari e opera direttamente su dati binari. Ciò evita la necessità di deserializzazione e riduce in modo significativo il sovraccarico associato alla conversione e alla deserializzazione dei dati.