Como posso ver o arquivo de origem do Amazon S3 para uma linha em uma tabela do Athena?
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
Conteúdo relevante
- AWS OFICIALAtualizada há 3 anos
- AWS OFICIALAtualizada há 9 meses
- AWS OFICIALAtualizada há um ano
- AWS OFICIALAtualizada há 9 meses