¿Cómo puedo ver el archivo de origen de Amazon S3 de una fila en una tabla de Athena?

3 minutos de lectura
0

Estoy consultando una tabla en Amazon Athena. Quiero saber qué archivo de Amazon Simple Storage Service (Amazon S3) es el origen de cada fila de la salida o qué filas corresponden a un archivo específico.

Breve descripción

  • Para averiguar qué archivo de Amazon S3 contiene los datos devueltos por una fila específica de una tabla de Athena, ejecute una consulta SELECT $path.
  • Para averiguar qué filas de la tabla de Athena están asociadas a un archivo específico de Amazon S3, ejecute una consulta SELECT con la condición WHERE $path.

Estas consultas son útiles para investigar datos inesperados y crear consultas que requieran información sobre los datos de origen.

Resolución

Antes de ejecutar las siguientes consultas, asegúrese de disponer de lo siguiente:

  • Una tabla de Athena. Si no tiene ninguna tabla, ejecute la declaración CREATE TABLE.
  • Un usuario o rol de AWS Identity and Access Management (IAM) que tenga permisos para ejecutar consultas de Athena.

Para buscar el archivo de S3 asociado a una fila de una tabla de Athena:

1.Ejecute una consulta SELECT en la tabla para obtener los datos que desee:

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

2.Para encontrar el archivo de origen de Amazon S3 para los datos, ejecute una consulta similar a la siguiente:

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

La consulta devuelve la ruta de Amazon S3 para los datos:

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

Para devolver las filas de la tabla de Athena que se originan en un archivo específico de Amazon S3:

1.Confirme el nombre y la ubicación del objeto de Amazon S3 del que desee recuperar las filas. Si no conoce el nombre y la ubicación del objeto, ejecute el comando Is para enumerar los objetos bajo un bucket o prefijo específicos de S3. En el siguiente ejemplo, sustituya s3://awsexamplebucket/my_table/my_partition/ por la ruta de su partición.

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

2.En Athena, ejecute una consulta SELECT en su tabla para devolver los datos asociados al archivo de Amazon S3:

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

La consulta devuelve datos que coinciden con la ruta de 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'

Esta consulta también admite algunas funciones comodín. Por ejemplo, para devolver todos los datos que contienen parte de un nombre de archivo, ejecute una consulta como esta:

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

Esta consulta devuelve todas las filas con nombres de archivo que contienen -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'

Información relacionada

El SerDe de Parquet

Conexión con orígenes de datos

OFICIAL DE AWS
OFICIAL DE AWSActualizada hace un año