Ir para o conteúdo

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

3 minuto de leitura
0

Quero que os resultados da minha consulta do Amazon Athena retornem os locais dos arquivos de origem do Amazon Simple Storage Service (Amazon S3) para cada linha nos resultados.

Breve descrição

É possível escrever consultas do Athena que retornam os caminhos dos arquivos de origem para os dados retornados pela sua consulta.

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

Resolução

Pré-requisitos: Antes de executar as consultas deste artigo, você deve ter o seguinte:

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

Para encontrar o arquivo do S3 associado a uma linha da sua tabela do Athena

Para encontrar o caminho do arquivo de origem do S3 para uma linha da sua tabela do Athena, execute consultas semelhantes aos exemplos a seguir:

  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 anterior retorna o caminho do Amazon S3 para os dados:

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

Encontre as linhas da tabela do Athena que vêm de um arquivo S3 específico

Para encontrar todas as linhas da sua tabela do Athena que têm um arquivo de origem específico do S3, siga as etapas a seguir:

  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 sua 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 do Amazon S3:

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

A consulta anterior retorna dados que vêm do caminho do Amazon S3 que você especificou:

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'

As consultas do Athena oferecem suporte à funcionalidade curinga com a função regexp_like. Por exemplo, para retornar dados provenientes de todos os arquivos de origem que compartilham uma string de caracteres em seu caminho, execute uma consulta como a seguinte:

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

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

Informações relacionadas

Parquet SerDe

Conectar-se às fontes de dados

Obter os locais dos arquivos dos dados de origem no Amazon S3

AWS OFICIALAtualizada há um ano