Nozioni di base - Amazon Athena

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

Fase 1: crea un database

In primo luogo, devi creare un database in Athena.

Per creare un database Athena
  1. Aprire la console Athena all'indirizzo https://console.aws.amazon.com/athena/.

  2. 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.

  3. Scegli Edit Settings (Modifica impostazioni) per configurare una nuova posizione dei risultati di una query in Amazon S3.

    Seleziona Modifica impostazioni.
  4. 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).

    Specificare una posizione in Amazon S3 per ricevere i risultati della query da Athena.
  5. Selezionare Salva.

  6. Scegli Editor per passare all'editor di query.

    Seleziona Editor.
  7. Sulla destra del pannello di navigazione, è possibile utilizzare l'editor di query Athena per inserire ed eseguire query e istruzioni.

    L'editor di query nella console Athena.
  8. Per creare un database denominato mydatabase, immettere la seguente istruzione CREATE DATABASE.

    CREATE DATABASE mydatabase
  9. Scegli Run (Esegui) o premi Ctrl+ENTER.

  10. Dall'elenco Database sulla sinistra, scegli mydatabase per renderlo il database corrente.

    Scegli il database creato.

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-myregion/cloudfront/plaintext/ in cui 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 DELIMITEDsignifica 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 TABLEistruzione 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 TABLEistruzione 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 regolare (regex) che contiene gruppi regex. I gruppi regex specificati diventano colonne di tabella separate. Per usare una regex nella tua istruzione CREATE 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
  1. Nel pannello di navigazione, in Database, assicurarsi che mydatabase sia selezionato.

  2. Per avere più spazio nell'editor di query, è possibile scegliere l'icona a forma di freccia e comprimere il pannello di navigazione.

    Scegli la freccia per comprimere il pannello di navigazione.
  3. 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.

    Scegliere l'icona più per creare una nuova query.
  4. 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).

    Scegli l'icona a forma di freccia per chiudere una o più schede di query.
  5. 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 campo ClientInfo 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 CloudFront

    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, 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/';
  6. Nell'LOCATIONistruzione, sostituisci myregion con Regione AWS quello che stai utilizzando attualmente (ad esempio,). us-west-1

  7. Seleziona Esegui.

    Viene creata la tabella cloudfront_logs che appare nell'elenco Tables (Tabelle) del database mydatabase.

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
  1. 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
  2. Seleziona Esegui.

    I risultati sono simili ai seguenti:

    Visualizzazione dei risultati delle query nella console Athena.
  3. Per salvare i risultati della query in un file .csv, scegli Download results (Scarica risultati).

    Download dei risultati delle query in formato CSV.
  4. Per visualizzare o eseguire le query precedenti, scegli la scheda Recent queries (Query recenti).

    Scegli Recent queries (Query recenti) per visualizzare le query precedenti.
  5. 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.

    Visualizzazione e download di query recenti nella console Athena.
  6. Per scaricare una o più stringhe di query SQL recenti in un file CSV, scegli Download CSV (Scarica CSV).

    Come scaricare stringhe di query recenti in un file 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 nel Blog sui Big Data di AWS .

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.