View a markdown version of this page

Interroga i file con SQL utilizzando Amazon Athena - FSx per ONTAP

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

Interroga i file con SQL utilizzando Amazon Athena

I sistemi aziendali producono spesso output basati su file (esportazioni di log, estrazioni di transazioni, istantanee di inventario, trasferimenti di file tra sistemi) che vengono trasferiti su una condivisione di file NFS o SMB.

Con un punto di accesso Amazon S3 collegato al volume FSx for ONTAP, Amazon Athena interroga i file sul posto. Le tue applicazioni e i tuoi utenti continuano a scrivere sul volume tramite NFS o SMB come hanno sempre fatto, e gli analisti eseguono SQL standard su tali dati attraverso il punto di accesso. Poiché un volume FSx for ONTAP è accessibile simultaneamente tramite NFS, SMB e l'API Amazon S3, lo stesso file può essere prodotto da un protocollo e utilizzato da un altro senza una copia.

In questo tutorial, carichi un set di dati di esempio sul tuo volume FSx for ONTAP tramite un punto di accesso Amazon S3, lo registri in e lo interroghi con Amazon AWS Glue Data Catalog Athena.

Nota

Il completamento di questo tutorial richiede circa 20-30 minuti. Le risorse Servizi AWS utilizzate sono soggette a costi per le risorse create. Se completi tempestivamente tutti i passaggi, inclusa la sezione Pulizia, il costo previsto è inferiore a 1 USD negli Stati Uniti orientali (Virginia settentrionale). Regione AWS Questa stima non include i costi correnti per il volume FSx for ONTAP stesso.

Prerequisiti

Prima di iniziare, assicurati di disporre di:

  • Un volume FSx for ONTAP con un access point Amazon S3 collegato. Il punto di accesso deve avere un'origine di rete Internet. Per istruzioni sulla creazione di un punto di accesso, vedereCreazione di un access point.

  • Un gruppo di lavoro Athena configurato con una posizione dei risultati delle query. Athena scrive i risultati delle query su un bucket Amazon S3, non sul volume FSx for ONTAP. Se non disponi di un gruppo di lavoro, puoi utilizzare il primary gruppo di lavoro e configurare una posizione dei risultati nella console Athena in Impostazioni. Per ulteriori informazioni, consulta Gestire i gruppi di lavoro nella Guida per l'utente di Amazon Athena.

  • Un ruolo IAM AWS Glue con la policy AWSGlueServiceRole gestita allegata e una policy in linea che garantisce l'accesso al tuo access point Amazon S3. Se non ne hai uno, segui i passaggi seguenti.

    1. Salva la seguente politica di attendibilità comeglue-trust-policy.json. Permette AWS Glue di assumere il ruolo.

      { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": {"Service": "glue.amazonaws.com"}, "Action": "sts:AssumeRole" } ] }
    2. Salva la seguente politica di autorizzazioni comeglue-s3-policy.json. Garantisce l'accesso al punto di accesso. Sostituisci region account-id e access-point-name con i tuoi valori.

      { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetObject", "s3:ListBucket" ], "Resource": [ "arn:aws:s3:region:account-id:accesspoint/access-point-name", "arn:aws:s3:region:account-id:accesspoint/access-point-name/object/*" ] } ] }
    3. Crea il ruolo e allega le politiche.

      $ aws iam create-role \ --role-name fsxn-tutorial-glue-role \ --assume-role-policy-document file://glue-trust-policy.json aws iam attach-role-policy \ --role-name fsxn-tutorial-glue-role \ --policy-arn arn:aws:iam::aws:policy/service-role/AWSGlueServiceRole aws iam put-role-policy \ --role-name fsxn-tutorial-glue-role \ --policy-name s3-access-point-policy \ --policy-document file://glue-s3-policy.json
  • Autorizzazioni IAM per eseguire query Athena e accedere al AWS Glue Data Catalog.

Importante

Il punto di accesso Amazon S3 deve utilizzare un'origine di rete Internet. Athena accede ad Amazon S3 dall'infrastruttura gestita, non dal tuo VPC. I punti di accesso con un'origine di rete VPC negano le richieste di Athena.

Fase 1: Caricare dati di esempio sul volume FSx for ONTAP

Questo tutorial utilizza i Trip Record Data della NYC Taxi and Limousine Commission (TLC), un set di dati sui viaggi in taxi a New York disponibile al pubblico. I dati sono in formato Apache Parquet, un formato colonnare su cui Athena può interrogare in modo efficiente.

Scarica i dati di un mese di viaggi in taxi giallo e caricali sul tuo volume FSx for ONTAP tramite il punto di accesso Amazon S3.

$ curl -O https://d37ci6vzurychx.cloudfront.net/trip-data/yellow_tripdata_2024-01.parquet

Caricate il file sul volume FSx for ONTAP utilizzando l'alias del punto di accesso. Sostituiscilo my-ap-alias-ext-s3alias con l'alias del punto di accesso.

$ aws s3 cp yellow_tripdata_2024-01.parquet \ s3://my-ap-alias-ext-s3alias/taxi-data/yellow_tripdata_2024-01.parquet

Verifica che il file sia accessibile tramite il punto di accesso.

$ aws s3 ls s3://my-ap-alias-ext-s3alias/taxi-data/ 2024-01-23 02:18:13 49961641 yellow_tripdata_2024-01.parquet

Fase 2: Creare un database nel AWS Glue Data Catalog

Crea un database nel file AWS Glue Data Catalog per contenere i metadati della tabella. È possibile creare il database utilizzando la AWS Glue console, l'editor di query Athena o il. AWS CLI

AWS Glue console

  1. Apri la AWS Glue console all'indirizzo https://console.aws.amazon.com/glue/.

  2. Nel riquadro di navigazione, in Data Catalog, scegli Database.

  3. Scegli Aggiungi database.

  4. In Nome, inserisci fsxn_taxi_demo.

  5. Scegliere Crea database.

Editor di query Athena o AWS CLI

$ aws athena start-query-execution \ --query-string "CREATE DATABASE IF NOT EXISTS fsxn_taxi_demo" \ --work-group primary

Fase 3: Registrare i dati nel AWS Glue Data Catalog

Puoi registrare i tuoi dati utilizzando un AWS Glue crawler (consigliato) o un'CREATE EXTERNAL TABLEistruzione manuale in Athena.

Opzione A: utilizza un AWS Glue crawler (consigliato)

Un AWS Glue crawler rileva automaticamente lo schema dei dati e crea una tabella in. AWS Glue Data Catalog Questo è l'approccio consigliato perché il crawler deduce i tipi di colonna corretti dai metadati del file Parquet.

  1. Create un crawler che punti all'alias del punto di accesso. my-ap-alias-ext-s3aliasSostituiscilo con l'alias del tuo punto di accesso e my-glue-role-arn con l'ARN del AWS Glue tuo ruolo IAM.

    $ aws glue create-crawler \ --name fsxn-taxi-crawler \ --role my-glue-role-arn \ --database-name fsxn_taxi_demo \ --targets '{"S3Targets": [{"Path": "s3://my-ap-alias-ext-s3alias/taxi-data/"}]}'
  2. Esegui il crawler.

    $ aws glue start-crawler --name fsxn-taxi-crawler
  3. Controlla lo stato del crawler. Il crawler si completa in genere in uno o due minuti.

    $ aws glue get-crawler --name fsxn-taxi-crawler \ --query "Crawler.{State:State,Status:LastCrawl.Status}"

    Al termine del crawler, lo stato è e lo stato èREADY. SUCCEEDED Il crawler crea una tabella denominata taxi_data (derivata dal nome della cartella) nel database. fsxn_taxi_demo

Opzione B: crea una tabella manualmente in Athena

Se conosci già lo schema dei tuoi dati, puoi creare la tabella direttamente in Athena utilizzando un'CREATE EXTERNAL TABLEistruzione. Usa l'alias del punto di accesso nella clausola. LOCATION

CREATE EXTERNAL TABLE fsxn_taxi_demo.yellow_taxi_trips ( VendorID bigint, tpep_pickup_datetime timestamp, tpep_dropoff_datetime timestamp, passenger_count bigint, trip_distance double, RatecodeID bigint, store_and_fwd_flag string, PULocationID bigint, DOLocationID bigint, payment_type bigint, fare_amount double, extra double, mta_tax double, tip_amount double, tolls_amount double, improvement_surcharge double, total_amount double, congestion_surcharge double, Airport_fee double ) STORED AS PARQUET LOCATION 's3://my-ap-alias-ext-s3alias/taxi-data/'
Nota

I tipi di colonna devono corrispondere ai tipi del file Parquet. Per questo set di dati, i campi come passenger_count e VendorID sono memorizzati come bigint (INT64) nel file Parquet, non. double Se i tipi non corrispondono, Athena restituisce un HIVE_BAD_DATA errore. L'uso di un AWS Glue crawler (opzione A) evita questo problema perché il crawler deduce automaticamente i tipi corretti.

Passaggio 4: interroga i dati

Apri l'editor di query Athena o utilizzalo AWS CLI per eseguire query SQL sui tuoi dati FSx for ONTAP. Gli esempi seguenti utilizzano la tabella creata dal crawler (). AWS Glue taxi_data Se avete creato la tabella manualmente, taxi_data sostituitela con. yellow_taxi_trips

Conta i viaggi totali e calcola le medie

SELECT COUNT(*) AS total_trips, ROUND(AVG(trip_distance), 2) AS avg_distance_miles, ROUND(AVG(total_amount), 2) AS avg_total_usd, ROUND(AVG(passenger_count), 1) AS avg_passengers FROM fsxn_taxi_demo.taxi_data

Output di esempio:

viaggi totali avg_distance_miles avg_total_usd avg_passeggeri
2964624 3,65 26,80 1.3

Trova gli orari di ritiro più trafficati

SELECT HOUR(tpep_pickup_datetime) AS pickup_hour, COUNT(*) AS trip_count, ROUND(AVG(total_amount), 2) AS avg_fare FROM fsxn_taxi_demo.taxi_data GROUP BY HOUR(tpep_pickup_datetime) ORDER BY trip_count DESC LIMIT 5

Trova i punti di ritiro con il fatturato più elevato

SELECT PULocationID AS pickup_location, COUNT(*) AS trip_count, ROUND(SUM(total_amount), 2) AS total_revenue FROM fsxn_taxi_demo.taxi_data GROUP BY PULocationID ORDER BY total_revenue DESC LIMIT 10

Considerazioni

  • Read-only accesso. Athena legge i dati dal volume FSx for ONTAP tramite il punto di accesso. I risultati delle query Athena vengono scritti nel bucket dei risultati di Amazon S3, non nel volume FSx for ONTAP.

  • È richiesta l'origine Internet. Athena accede ad Amazon S3 da un'infrastruttura gestita esterna al tuo VPC. I tasti aws:SourceVpc and aws:SourceVpce condition non sono disponibili per le richieste Athena. È necessario utilizzare un punto di accesso di origine Internet.

  • Formato del file. Athena supporta Parquet, ORC, JSON, CSV e altri formati. I formati colonnari come Parquet e ORC offrono le migliori prestazioni di interrogazione perché Athena legge solo le colonne a cui si fa riferimento nella query.

  • Autorizzazioni utente del file system. L'utente del file system associato al punto di accesso deve disporre dell'autorizzazione di lettura per i file interrogati.

  • AWS Glue Data Catalog la tabella è riutilizzabile. Una volta registrata AWS Glue Data Catalog, una tabella è disponibile per altri servizi di AWS analisi che si integrano con AWS Glue Data Catalog, come Amazon Redshift Spectrum, AWS Glue Amazon EMR ed ETL job.

Eliminazione

Per evitare addebiti continui, elimina le risorse che hai creato in questo tutorial.

  1. Eliminare le tabelle e il database Athena.

    DROP TABLE IF EXISTS fsxn_taxi_demo.taxi_data; DROP TABLE IF EXISTS fsxn_taxi_demo.yellow_taxi_trips; DROP DATABASE IF EXISTS fsxn_taxi_demo CASCADE;
  2. Eliminare il AWS Glue crawler.

    $ aws glue delete-crawler --name fsxn-taxi-crawler
  3. Eliminare i dati di esempio dal volume FSx for ONTAP.

    $ aws s3 rm s3://my-ap-alias-ext-s3alias/taxi-data/yellow_tripdata_2024-01.parquet