Como posso ver o arquivo de origem do Amazon S3 para uma linha em uma tabela do Athena?

3 minuto de leitura
0

Estou consultando uma tabela no Amazon Athena. Quero descobrir qual arquivo do Amazon Simple Storage Service (Amazon S3) é a origem de cada linha na saída ou quais linhas correspondem a um arquivo específico.

Descrição breve

  • Para descobrir qual arquivo do Amazon S3 contém dados retornados por uma linha específica em uma tabela do Athena, execute uma consulta SELECT $path.
  • Para descobrir quais linhas da tabela do Athena estão associadas a um arquivo específico do Amazon S3, execute uma consulta SELECT com a condição WHERE $path.

Essas consultas são úteis para investigar dados inesperados e criar consultas que exigem informações sobre os dados de origem.

Resolução

Antes de executar as consultas a seguir, verifique se você tem o seguinte:

  • Uma tabela do Athena. Se você não tiver uma tabela, execute uma instrução CREATE TABLE.
  • Um usuário ou perfil do AWS Identity and Access Management (IAM) que tenha permissões para executar consultas do Athena.

Para encontrar o arquivo S3 associado a uma linha de uma tabela do Athena:

1.    Execute uma consulta SELECT em sua tabela para retornar os dados que você deseja:

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

2.    Para encontrar o arquivo de origem do Amazon S3 para os dados, execute uma consulta semelhante à seguinte:

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

A consulta retorna o caminho do Amazon S3 para os dados:

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

Para retornar as linhas da tabela Athena provenientes de um arquivo específico do Amazon S3:

1.    Confirme o nome e a localização do objeto do Amazon S3 cujas linhas você deseja recuperar. Se você não souber o nome e a localização do objeto, execute o comando ls para listar objetos sob um bucket ou prefixo específico do S3. No exemplo a seguir, substitua s3://awsexamplebucket/my_table/my_partition/ pelo caminho da partição.

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

2.    No Athena, execute uma consulta SELECT em sua tabela para retornar dados associados ao arquivo Amazon S3:

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

A consulta retorna dados que correspondem ao caminho do 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'

Essa consulta também oferece suporte a algumas funcionalidades curinga. Por exemplo, para retornar todos os dados que contêm parte do nome de um arquivo, execute uma consulta como esta:

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

Essa consulta retorna todas as linhas com nomes de arquivo que contêm -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'

Informações relacionadas

Parquet SerDe

Conectar-se a fontes de dados

AWS OFICIAL
AWS OFICIALAtualizada há 2 anos