Come posso vedere il file sorgente di Amazon S3 relativo a una riga in una tabella Athena?

3 minuti di lettura
0

Sto eseguendo una query su una tabella in Amazon Athena. Desidero scoprire il file Amazon Simple Storage Service (Amazon S3) all'origine di ogni riga dell'output o le righe corrispondenti a un file specifico.

Breve descrizione

  • Per scoprire quale file Amazon S3 contiene i dati restituiti da una riga specifica in una tabella Athena, esegui una query SELECT $path.
  • Per scoprire quali righe della tabella Athena sono associate a uno specifico file Amazon S3, esegui una query SELECT con la condizione WHERE $path.

Tali query sono utili per analizzare dati imprevisti e creare query che richiedono informazioni sui dati di origine.

Risoluzione

Prima di eseguire le seguenti query, assicurati di disporre di quanto segue:

  • Una tabella Athena. Se non disponi di una tabella, esegui un'istruzione CREATE TABLE.
  • Un utente o un ruolo di AWS Identity and Access Management (IAM) che dispone delle autorizzazioni per eseguire le query Athena.

Per trovare il file S3 associato a una riga di una tabella Athena:

1.    Esegui una query SELECT sulla tua tabella per restituire i dati che desideri:

SELECT * FROM "my_database"."my_table" WHERE year=2019;

2.    Per trovare il file sorgente Amazon S3 per i dati, esegui una query simile alla seguente:

SELECT "$path" FROM "my_database"."my_table" WHERE year=2019;

La query restituisce il percorso Amazon S3 per i dati:

s3://awsexamplebucket/datasets_mytable/year=2019/data_file1.json

Per restituire le righe della tabella Athena che provengono da uno specifico file Amazon S3:

1.    Verifica il nome e la posizione dell'oggetto Amazon S3 per cui desideri recuperare le righe. Se non conosci il nome e la posizione dell'oggetto, esegui il comando ls per elencare gli oggetti sotto uno specifico bucket o prefisso S3. Nell'esempio seguente, sostituisci s3://awsexamplebucket/my_table/my_partition/ con il percorso della partizione.

aws s3 ls s3://awsexamplebucket/my_table/my_partition/

2.    In Athena, esegui una query SELECT sulla tua tabella per restituire i dati associati al file Amazon S3:

SELECT *,"$path" FROM "my_database"."my_table" WHERE regexp_like("$path", 's3://awsexamplebucket/my_table/my_partition/file-01.csv')

La query restituisce dati che corrispondono al percorso Amazon S3:

id    name    year    $path
3     John    1999    's3://awsexamplebucket/my_table/my_partition/file-01.csv'
4     Jane    2000    's3://awsexamplebucket/my_table/my_partition/file-01.csv'

Questa query supporta anche alcune funzionalità dei caratteri jolly. Ad esempio, per restituire tutti i dati che contengono parte di un nome di file, esegui una query come la seguente:

SELECT *,"$path" FROM "my_database"."my_table" WHERE regexp_like("$path", '\-02')

Questa query restituisce tutte le righe con nomi di file che contengono -02:

id    name    year    $path
13    Mia     2009    's3://awsexamplebucket/my_table/my_partition/file-02.csv'
14    Mary    2010    's3://awsexamplebucket/my_table/my_partition/file-02.csv'
15    Max     2011    's3://awsexamplebucket/my_table/my_partition/file-02.csv'
16    Merriam 2012    's3://awsexamplebucket/my_table/my_partition/file-02.csv'

Informazioni correlate

Parquet SerDe

Connessione a origini dati

AWS UFFICIALE
AWS UFFICIALEAggiornata un anno fa