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à.
Nozioni di base
Questo tutorial ti guiderà nell'utilizzo di Amazon Athena per eseguire le query dei dati. Durante il tutorial, creerai una tabella basata sui dati campione archiviati in Amazon Simple Storage Service, eseguire una query della tabella e controllare i risultati della query.
Il tutorial utilizza risorse in tempo reale, pertanto ti sarà addebitato il costo delle query da te eseguite. Non ti saranno addebitati i costi per i dati campione nella posizione utilizzata da questo tutorial, tuttavia se carichi tuoi file di dati in Amazon S3 vengono applicate delle tariffe.
Prerequisiti
-
Se non lo hai ancora fatto, registrati per creare un Account AWS.
-
Utilizzando lo stesso account Regione AWS (ad esempio, US West (Oregon)) e lo stesso account che utilizzi per Athena, segui i passaggi per creare un bucket in Amazon S3 per contenere i risultati delle tue query Athena. Configurerai questo bucket come posizione di output della tua query.
Fase 1: crea un database
In primo luogo, devi creare un database in Athena.
Per creare un database Athena
Aprire la console Athena all'indirizzo https://console.aws.amazon.com/athena/
. -
Se è la prima volta che visiti la console di Athena nella Regione AWS corrente, scegli Explore the query editor (Esplora l'editor di query) per aprire l'editor di query. Altrimenti, Athena apre la query nell'editor di query.
-
Scegli Edit Settings (Modifica impostazioni) per configurare una nuova posizione dei risultati di una query in Amazon S3.
-
Per Manage settings (Gestisci impostazioni), effettua una delle seguenti operazioni:
-
Nella casella Location of query result (Posizione dei risultati delle query) inserisci il percorso del bucket creato in Amazon S3 per i risultati delle query. Aggiungi al percorso il prefisso
s3://
. -
Scegli Browse S3 (Sfoglia S3), scegli il bucket Amazon S3 creato per la tua regione corrente, quindi seleziona Choose (Scegli).
-
-
Selezionare Salva.
-
Scegli Editor per passare all'editor di query.
-
Sulla destra del pannello di navigazione, è possibile utilizzare l'editor di query Athena per inserire ed eseguire query e istruzioni.
-
Per creare un database denominato
mydatabase
, immettere la seguente istruzione CREATE DATABASE.CREATE DATABASE mydatabase
-
Scegli Run (Esegui) o premi
Ctrl+ENTER
. -
Dall'elenco Database sulla sinistra, scegli
mydatabase
per renderlo il database corrente.
Fase 2: creare una tabella
Ora che hai un database, puoi creare una tabella Athena. La tabella che creerai si baserà su esempi di dati di CloudFront log Amazon nella località s3://athena-examples-
in cui myregion
/cloudfront/plaintext/myregion
è la tua attuale Regione AWS posizione.
I dati di log di esempio sono in formato TSV (Tab-Separated Values), il che significa che un carattere di tabulazione viene utilizzato come delimitatore per separare i campi. I dati vengono mostrati come nell'esempio seguente. Per la leggibilità, le tabulazioni nell'estratto sono state convertite in spazi e il campo finale è stato abbreviato.
2014-07-05 20:00:09 DFW3 4260 10.0.0.15 GET eabcd12345678.cloudfront.net /test-image-1.jpeg 200 - Mozilla/5.0[...]
2014-07-05 20:00:09 DFW3 4252 10.0.0.15 GET eabcd12345678.cloudfront.net /test-image-2.jpeg 200 - Mozilla/5.0[...]
2014-07-05 20:00:10 AMS1 4261 10.0.0.15 GET eabcd12345678.cloudfront.net /test-image-3.jpeg 200 - Mozilla/5.0[...]
Per consentire ad Athena di leggere questi dati, puoi creare una CREATE
EXTERNAL TABLE
dichiarazione semplice come la seguente. L'istruzione che crea la tabella definisce le colonne che mappano i dati, specifica la modalità di delimitazione dei dati e specifica la posizione Amazon S3 che contiene i dati di esempio. Tieni presente che, poiché Athena prevede di scansionare tutti i file in una cartella, la LOCATION
clausola specifica una posizione della cartella Amazon S3, non un file specifico.
Non utilizzate ancora questo esempio in quanto presenta un'importante limitazione che verrà spiegata a breve.
CREATE EXTERNAL TABLE IF NOT EXISTS cloudfront_logs (
`Date` DATE,
Time STRING,
Location STRING,
Bytes INT,
RequestIP STRING,
Method STRING,
Host STRING,
Uri STRING,
Status INT,
Referrer STRING,
ClientInfo STRING
)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY '\t'
LINES TERMINATED BY '\n'
LOCATION 's3://athena-examples-my-region
/cloudfront/plaintext/';
L'esempio crea una tabella denominata cloudfront_logs
e specifica un nome e un tipo di dati per ogni campo. Questi campi diventano le colonne nella tabella. Poiché date
è una parola riservata, viene eliminata con caratteri backtick (`). ROW FORMAT DELIMITED
significa che Athena utilizzerà una libreria predefinita chiamata LazySimpleSerDeper eseguire l'effettivo lavoro di analisi dei dati. L'esempio specifica inoltre che i campi sono separati da tabulazioni (FIELDS TERMINATED BY '\t'
) e che ogni record nel file termina con un carattere di nuova riga (LINES TERMINATED BY '\n
). Infine, la clausola LOCATION
specifica il percorso in Amazon S3 in cui si trovano i dati effettivi da leggere.
Se disponi di dati personalizzati separati da tabulazioni o virgole, puoi utilizzare un'CREATE
TABLE
istruzione come nell'esempio appena presentato, purché i campi non contengano informazioni annidate. Tuttavia, se una colonna del genere contiene informazioni annidate ClientInfo
che utilizzano un delimitatore diverso, è necessario un approccio diverso.
Estrazione di dati dal campo ClientInfo
Guardando i dati di esempio, ecco un esempio completo del campo ClientInfo
finale:
Mozilla/5.0%20(Android;%20U;%20Windows%20NT%205.1;%20en-US;%20rv:1.9.0.9)%20Gecko/2009040821%20IE/3.0.9
Come puoi vedere, questo campo è multivalore. Poiché l'CREATE
TABLE
istruzione di esempio appena presentata specifica le tabulazioni come delimitatori di campo, non è possibile suddividere i componenti separati all'interno del ClientInfo
campo in colonne separate. Pertanto, è necessaria una nuova CREATE TABLE
dichiarazione.
Per creare colonne dai valori all'interno del ClientInfo
campo, puoi usare un'espressione regolareCREATE TABLE
, utilizzare la sintassi simile alla seguente. Questa sintassi indica ad Athena di utilizzare la libreria Regex SerDe e l'espressione regolare specificata.
ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.RegexSerDe' WITH SERDEPROPERTIES ("input.regex" = "
regular_expression
")
Le espressioni regolari possono essere utili per la creazione di tabelle da dati CSV o TSV complessi, ma possono essere difficili da scrivere e gestire. Fortunatamente, ci sono altre librerie che è possibile utilizzare per formati come JSON, Parquet e ORC. Per ulteriori informazioni, consulta Formati di SerDe e di dati supportati.
Ora è possibile creare la tabella nell'editor di query Athena. L'istruzione CREATE
TABLE
e la regex ti vengono forniti.
Per creare una tabella in Athena
-
Nel pannello di navigazione, in Database, assicurarsi che
mydatabase
sia selezionato. -
Per avere più spazio nell'editor di query, è possibile scegliere l'icona a forma di freccia e comprimere il pannello di navigazione.
-
Scegli il segno più (+) nell'editor delle query per creare una scheda per una nuova query. È possibile avere fino a dieci schede di query aperte contemporaneamente.
-
Per chiudere una o più schede di query, scegli la freccia accanto al segno più. Per chiudere tutte le schede contemporaneamente, scegliere la freccia, quindi scegli Close all tabs (Chiudi tutte le schede).
-
Nel riquadro delle query inserire la seguente istruzione
CREATE EXTERNAL TABLE
. La regex suddivide le informazioni sul sistema operativo, sul browser e sulla versione del browser dal campoClientInfo
nei dati di log.Nota
L'espressione regolare utilizzata nell'esempio seguente è progettata per funzionare con i dati di CloudFront log di esempio disponibili pubblicamente nella posizione
athena-examples
Amazon S3 ed è solo illustrativa. Per altre up-to-date espressioni regolari che interrogano file di log standard e in tempo reale CloudFront , consulta. Interrogazione dei log di Amazon CloudFrontCREATE EXTERNAL TABLE IF NOT EXISTS cloudfront_logs ( `Date` DATE, Time STRING, Location STRING, Bytes INT, RequestIP STRING, Method STRING, Host STRING, Uri STRING, Status INT, Referrer STRING, os STRING, Browser STRING, BrowserVersion STRING ) ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.RegexSerDe' WITH SERDEPROPERTIES ( "input.regex" = "^(?!#)([^ ]+)\\s+([^ ]+)\\s+([^ ]+)\\s+([^ ]+)\\s+([^ ]+)\\s+([^ ]+)\\s+([^ ]+)\\s+([^ ]+)\\s+([^ ]+)\\s+([^ ]+)\\s+[^\(]+[\(]([^\;]+).*\%20([^\/]+)[\/](.*)$" ) LOCATION 's3://athena-examples-
myregion
/cloudfront/plaintext/'; -
Nell'
LOCATION
istruzione, sostituiscimyregion
con Regione AWS quello che stai utilizzando attualmente (ad esempio,).us-west-1
-
Seleziona Esegui.
Viene creata la tabella
cloudfront_logs
che appare nell'elenco Tables (Tabelle) del databasemydatabase
.
Fase 3: Esecuzione di query sui dati
Dopo aver creato la tabella cloudfront_logs
in Athena in base ai dati in Amazon S3, è possibile eseguire le query sulla tabella e visualizzarne i risultati in Athena. Per ulteriori informazioni sull'utilizzo di SQL in Athena, consultare Documentazione di riferimento SQL per Athena.
Per eseguire una query
-
Scegli il segno più (+) per aprire una nuova scheda di query e inserire la seguente istruzione SQL nel riquadro delle query.
SELECT os, COUNT(*) count FROM cloudfront_logs WHERE date BETWEEN date '2014-07-05' AND date '2014-08-05' GROUP BY os
-
Seleziona Esegui.
I risultati sono simili ai seguenti:
-
Per salvare i risultati della query in un file
.csv
, scegli Download results (Scarica risultati). -
Per visualizzare o eseguire le query precedenti, scegli la scheda Recent queries (Query recenti).
-
Per scaricare i risultati di una query precedente dalla scheda Recent queries (Query recenti), seleziona la query, quindi scegli Download results (Scarica risultati). Le query vengono conservate per 45 giorni.
-
Per scaricare una o più stringhe di query SQL recenti in un file CSV, scegli Download CSV (Scarica CSV).
Per ulteriori informazioni, consulta Utilizzo dei risultati delle query, delle query recenti e dei file di output.
Salvataggio delle query
Puoi salvare le query create o modificate nell'editor di query con un nome. Athena memorizza queste query sulla scheda Query salvate. Puoi utilizzare la scheda Query salvate per richiamare, eseguire, rinominare o eliminare le query salvate. Per ulteriori informazioni, consulta Utilizzo di query salvate.
Scelte rapide da tastiera e suggerimenti di digitazione
L'editor di query Athena offre numerose scorciatoie da tastiera per azioni come l'esecuzione di una query, la formattazione di una query, le operazioni di riga e la ricerca e sostituzione. Per ulteriori informazioni e un elenco completo delle scorciatoie, consulta Come migliorare la produttività utilizzando le scorciatoie da tastiera nell'editor di query di Amazon Athena
L'editor di query Athena supporta suggerimenti di codice typeahead per un'esperienza di creazione di query più rapida. Per aiutarti a scrivere query SQL con maggiore precisione e maggiore efficienza, offre le seguenti funzionalità:
-
Durante la digitazione, vengono visualizzati suggerimenti in tempo reale per parole chiave, variabili locali, frammenti ed elementi del catalogo.
-
Quando digiti il nome di un database o di tabella seguito da un punto, l'editor visualizza in maniera pratica un elenco di tabelle o colonne tra cui scegliere.
-
Quando passi il mouse su un suggerimento di snippet, una sinossi mostra una breve panoramica della sintassi e dell'utilizzo dello snippet.
-
Per migliorare la leggibilità del codice, anche le parole chiave e le relative regole di evidenziazione sono state aggiornate per allinearle alla sintassi più recente di Trino e Hive.
Questa caratteristica viene attivata per impostazione predefinita. Per abilitare o disabilitare la funzionalità, utilizza le Preferenze editor di codice (icona a forma di ingranaggio) in basso a destra nella finestra dell'editor di query.
Connessione ad altre origini dati
Questo tutorial ha utilizzato un'origine dati Amazon S3 in formato CSV. Per informazioni sull'utilizzo di Athena con AWS Glue, vedere. Utilizzo AWS Glue per connettersi a sorgenti dati in Amazon S3 È possibile inoltre connettere Athena a una varietà di origini dati utilizzando i driver ODBC e JDBC, i metastore Hive esterni e i connettori di origini dati Athena. Per ulteriori informazioni, consulta Connessione alle origini dati.