Salta al contenuto

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

3 minuti di lettura
0

Desidero che i risultati della mia query in Amazon Athena restituiscano le posizioni dei file di origine Amazon Simple Storage Service (Amazon S3) per ogni riga dei risultati.

Breve descrizione

Puoi scrivere query in Athena che restituiscono i percorsi dei file di origine per i dati restituiti dalla query.

  • Per individuare il file Amazon S3 che contiene i dati restituiti da una riga specifica di una tabella Athena, esegui una query SELECT $path.
  • Per individuare le righe della tabella Athena associate a un file Amazon S3 specifico, esegui una query SELECT con la condizione WHERE $path.

Risoluzione

Prerequisiti: prima di eseguire le query riportate in questo articolo, devi disporre di quanto segue:

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

Individua il file S3 associato a una riga di una tabella Athena

Per individuare il percorso del file di origine S3 relativo a una riga di una tabella Athena, esegui query simili alle seguenti:

  1. Per ottenere i dati desiderati, esegui una query SELECT sulla tabella:

    SELECT * FROM "my_database"."my_table" WHERE year=2019;
  2. Per individuare il file di origine Amazon S3 per i dati, esegui una query simile alla seguente:

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

La query precedente restituisce il percorso Amazon S3 per i dati:

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

Trova le righe della tabella Athena che provengono da un file S3 specifico

Per trovare tutte le righe della tabella Athena che hanno un file di origine S3 specifico, segui questa procedura:

  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 di 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. Per ottenere i dati associati al file Amazon S3, in Athena, esegui una query SELECT sulla tabella:

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

La query precedente restituisce i dati che provengono dal percorso Amazon S3 specificato:

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'

Le query in Athena supportano la funzionalità wildcard con la funzione regexp_like. Ad esempio, per ottenere i dati provenienti da tutti i file di origine che condividono una stringa di caratteri nel loro percorso, esegui una query come questa:

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

Questa query restituisce tutte le righe con nomi di percorso del file che contengono file-1:

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

Informazioni correlate

Parquet SerDe

Connessione alle origini dati

Ottenere le posizioni dei file per i dati di origine in Amazon S3

AWS UFFICIALEAggiornata 2 anni fa