Saltar al contenido

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

3 minutos de lectura
0

Quiero que los resultados de mi consulta de Amazon Athena devuelvan las ubicaciones de los archivos de origen de Amazon Simple Storage Service (Amazon S3) para cada fila de los resultados.

Descripción corta

Puedes escribir consultas de Athena que devuelven las rutas de los archivos de origen de los datos devueltos por la consulta.

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

Resolución

Requisitos previos: Antes de ejecutar las consultas de este artículo, debes disponer de lo siguiente:

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

Búsqueda del archivo de S3 asociado a una fila de una tabla de Athena

Para buscar la ruta del archivo de origen de S3 para una fila de la tabla de Athena, ejecuta consultas similares a las de los siguientes ejemplos:

  1. Para devolver los datos que deseas, ejecuta una consulta SELECT en la tabla:

    SELECT * FROM "my_database"."my_table" WHERE year=2019;
  2. Para encontrar el archivo de origen de Amazon S3 para los datos, ejecuta una consulta similar a la siguiente:

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

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

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

Búsqueda de las filas de la tabla de Athena que provienen de un archivo de S3 específico

Para buscar todas las filas de la tabla de Athena que tienen un archivo de origen de S3 específico, consulta los pasos siguientes:

  1. Confirma el nombre y la ubicación del objeto de Amazon S3 del que desees recuperar las filas. Si no conoces el nombre y la ubicación del objeto, ejecuta el comando Is para enumerar los objetos bajo un bucket o prefijo específicos de S3. En el siguiente ejemplo, sustituye s3://awsexamplebucket/my_table/my_partition/ por la ruta de tu partición.

    aws s3 ls s3://awsexamplebucket/my_table/my_partition/
  2. Para devolver los datos asociados al archivo de Amazon S3, en Athena, ejecuta una consulta SELECT en tu tabla:

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

La consulta anterior devuelve datos que provienen de la ruta de Amazon S3 que especificaste:

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'

Las consultas de Athena admiten la funcionalidad comodín con la función regexp_like. Por ejemplo, para devolver datos que provienen de todos los archivos de origen que comparten una cadena de caracteres en su ruta, ejecuta una consulta como la siguiente:

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

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

Información relacionada

El SerDe de Parquet

Conexión con orígenes de datos

Obtención de las ubicaciones de archivos para los datos de origen en Amazon S3

OFICIAL DE AWSActualizada hace un año