View a markdown version of this page

Consulte archivos con SQL mediante Amazon Athena - FSx para ONTAP

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Consulte archivos con SQL mediante Amazon Athena

Los sistemas empresariales suelen producir resultados basados en archivos (exportaciones de registros, extractos de transacciones, instantáneas de inventario, transferencias de archivos entre sistemas) que llegan a un recurso compartido de archivos NFS o SMB.

Con un punto de acceso Amazon S3 conectado al volumen FSx for ONTAP, Amazon Athena consulta los archivos existentes. Sus aplicaciones y sus usuarios siguen escribiendo en el volumen a través de NFS o SMB como siempre lo han hecho, y los analistas utilizan el SQL estándar para comparar esos datos a través del punto de acceso. Como se puede acceder simultáneamente a un volumen de FSx for ONTAP a través de NFS, SMB y la API de Amazon S3, un protocolo puede generar el mismo archivo y consumirlo otro sin necesidad de copiarlo.

En este tutorial, cargará un conjunto de datos de muestra en su volumen de FSx for ONTAP a través de un punto de acceso de Amazon S3, lo registrará en y lo AWS Glue Data Catalog consultará con Amazon Athena.

nota

Este tutorial tarda aproximadamente entre 20 y 30 minutos en completarse. Los Servicios de AWS usuarios incurren en cargos por los recursos que cree. Si completa todos los pasos, incluida la sección de limpieza, con prontitud, el coste previsto será inferior a 1 dólar en la zona este de EE. UU. (Virginia del Norte) Región de AWS. Esta estimación no incluye los cargos continuos del FSx para el propio volumen de ONTAP.

Requisitos previos

Antes de empezar, asegúrese de que tiene lo siguiente:

  • Un volumen FSx para ONTAP con un punto de acceso Amazon S3 conectado. El punto de acceso debe tener un origen en una red de Internet. Para obtener instrucciones sobre cómo crear un punto de acceso, consulteCreación de un punto de acceso.

  • Un grupo de trabajo de Athena configurado con una ubicación de resultados de consulta. Athena escribe los resultados de las consultas en un bucket de Amazon S3, no en el volumen de FSx para ONTAP. Si no tiene un grupo de trabajo, puede usar el grupo de primary trabajo y configurar una ubicación de resultados en la consola de Athena en Configuración. Para obtener más información, consulte Administración de grupos de trabajo en la Guía del usuario de Amazon Athena.

  • Una función de IAM AWS Glue con la política AWSGlueServiceRole gestionada adjunta y una política en línea que concede acceso a su punto de acceso Amazon S3. Si no tiene uno, siga los siguientes pasos.

    1. Guarde la siguiente política de confianza comoglue-trust-policy.json. Permite AWS Glue asumir el rol.

      { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": {"Service": "glue.amazonaws.com"}, "Action": "sts:AssumeRole" } ] }
    2. Guarde la siguiente política de permisos comoglue-s3-policy.json. Concede acceso al punto de acceso. Sustituya regionaccount-id, y access-point-name por sus valores.

      { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetObject", "s3:ListBucket" ], "Resource": [ "arn:aws:s3:region:account-id:accesspoint/access-point-name", "arn:aws:s3:region:account-id:accesspoint/access-point-name/object/*" ] } ] }
    3. Cree el rol y adjunte las políticas.

      $ aws iam create-role \ --role-name fsxn-tutorial-glue-role \ --assume-role-policy-document file://glue-trust-policy.json aws iam attach-role-policy \ --role-name fsxn-tutorial-glue-role \ --policy-arn arn:aws:iam::aws:policy/service-role/AWSGlueServiceRole aws iam put-role-policy \ --role-name fsxn-tutorial-glue-role \ --policy-name s3-access-point-policy \ --policy-document file://glue-s3-policy.json
  • Permisos de IAM para ejecutar consultas de Athena y acceder al catálogo AWS Glue de datos.

importante

El punto de acceso Amazon S3 debe utilizar un origen de red de Internet. Athena accede a Amazon S3 desde una infraestructura gestionada, no desde su VPC. Los puntos de acceso con origen en una red de VPC rechazan las solicitudes de Athena.

Paso 1: Cargue datos de muestra en su FSx para el volumen ONTAP

Este tutorial utiliza los datos del registro de viajes de la Comisión de Taxis y Limusinas de la Ciudad de Nueva York (TLC), un conjunto de datos de acceso público sobre los viajes en taxi en la ciudad de Nueva York. Los datos están en formato Apache Parquet, un formato de columnas que Athena puede consultar de forma eficaz.

Descarga los datos de un mes de viajes en taxi amarillos y súbelos a tu volumen de FSx for ONTAP a través del punto de acceso Amazon S3.

$ curl -O https://d37ci6vzurychx.cloudfront.net/trip-data/yellow_tripdata_2024-01.parquet

Cargue el archivo en su volumen FSx for ONTAP utilizando el alias del punto de acceso. my-ap-alias-ext-s3aliasSustitúyalo por el alias de tu punto de acceso.

$ aws s3 cp yellow_tripdata_2024-01.parquet \ s3://my-ap-alias-ext-s3alias/taxi-data/yellow_tripdata_2024-01.parquet

Compruebe que se puede acceder al archivo a través del punto de acceso.

$ aws s3 ls s3://my-ap-alias-ext-s3alias/taxi-data/ 2024-01-23 02:18:13 49961641 yellow_tripdata_2024-01.parquet

Paso 2: Cree una base de datos en el AWS Glue Data Catalog

Cree una base de datos en la AWS Glue Data Catalog que se guarden los metadatos de la tabla. Puede crear la base de datos mediante la AWS Glue consola, el editor de consultas de Athena o el. AWS CLI

AWS Glue console

  1. Abra la AWS Glue consola en. https://console.aws.amazon.com/glue/

  2. En el panel de navegación, en Catálogo de datos, elija Bases de datos.

  3. Elija Agregar una base de datos.

  4. En Nombre, escriba fsxn_taxi_demo.

  5. Elija Creación de base de datos.

editor de consultas Athena o AWS CLI

$ aws athena start-query-execution \ --query-string "CREATE DATABASE IF NOT EXISTS fsxn_taxi_demo" \ --work-group primary

Paso 3: Registre los datos en el AWS Glue Data Catalog

Puede registrar sus datos mediante un AWS Glue rastreador (recomendado) o una CREATE EXTERNAL TABLE declaración manual en Athena.

Opción A: utilizar un AWS Glue rastreador (recomendado)

Un AWS Glue rastreador descubre automáticamente el esquema de los datos y crea una tabla en el. AWS Glue Data Catalog Este es el enfoque recomendado porque el rastreador deduce los tipos de columnas correctos a partir de los metadatos del archivo Parquet.

  1. Cree un rastreador que apunte al alias del punto de acceso. my-ap-alias-ext-s3aliasSustitúyalo por el alias de tu punto de acceso y my-glue-role-arn por el ARN de tu función de AWS Glue IAM.

    $ aws glue create-crawler \ --name fsxn-taxi-crawler \ --role my-glue-role-arn \ --database-name fsxn_taxi_demo \ --targets '{"S3Targets": [{"Path": "s3://my-ap-alias-ext-s3alias/taxi-data/"}]}'
  2. Ejecute el rastreador de .

    $ aws glue start-crawler --name fsxn-taxi-crawler
  3. Compruebe el estado del rastreador. Por lo general, el rastreador se completa en uno o dos minutos.

    $ aws glue get-crawler --name fsxn-taxi-crawler \ --query "Crawler.{State:State,Status:LastCrawl.Status}"

    Cuando el rastreador termina, el estado es READY y el estado es. SUCCEEDED El rastreador crea una tabla con el nombre taxi_data (derivado del nombre de la carpeta) en la fsxn_taxi_demo base de datos.

Opción B: crear una tabla manualmente en Athena

Si ya conoce el esquema de sus datos, puede crear la tabla directamente en Athena mediante una CREATE EXTERNAL TABLE sentencia. Utilice el alias del punto de acceso de la LOCATION cláusula.

CREATE EXTERNAL TABLE fsxn_taxi_demo.yellow_taxi_trips ( VendorID bigint, tpep_pickup_datetime timestamp, tpep_dropoff_datetime timestamp, passenger_count bigint, trip_distance double, RatecodeID bigint, store_and_fwd_flag string, PULocationID bigint, DOLocationID bigint, payment_type bigint, fare_amount double, extra double, mta_tax double, tip_amount double, tolls_amount double, improvement_surcharge double, total_amount double, congestion_surcharge double, Airport_fee double ) STORED AS PARQUET LOCATION 's3://my-ap-alias-ext-s3alias/taxi-data/'
nota

Los tipos de columnas deben coincidir con los tipos del archivo Parquet. Para este conjunto de datos, los campos VendorID son como (INT64) passenger_count y no double se almacenan como bigint (INT64) en el archivo Parquet. Si los tipos no coinciden, Athena devuelve un HIVE_BAD_DATA error. El uso de un AWS Glue rastreador (opción A) evita este problema porque el rastreador deduce los tipos correctos automáticamente.

Paso 4: consulta tus datos

Abra el editor de consultas de Athena o utilícelo AWS CLI para ejecutar consultas SQL en sus datos de FSx para ONTAP. Los siguientes ejemplos utilizan la tabla creada por el AWS Glue rastreador (). taxi_data Si creó la tabla manualmente, sustitúyala portaxi_data. yellow_taxi_trips

Cuente el total de viajes y calcule los promedios

SELECT COUNT(*) AS total_trips, ROUND(AVG(trip_distance), 2) AS avg_distance_miles, ROUND(AVG(total_amount), 2) AS avg_total_usd, ROUND(AVG(passenger_count), 1) AS avg_passengers FROM fsxn_taxi_demo.taxi_data

Ejemplo de código de salida:

total_viajes avg_distance_millas avg_total_usd avg_passengers
2964624 3,65 26,80 1.3

Encuentra las horas de recogida más concurridas

SELECT HOUR(tpep_pickup_datetime) AS pickup_hour, COUNT(*) AS trip_count, ROUND(AVG(total_amount), 2) AS avg_fare FROM fsxn_taxi_demo.taxi_data GROUP BY HOUR(tpep_pickup_datetime) ORDER BY trip_count DESC LIMIT 5

Encuentra los puntos de recogida con mayores ingresos

SELECT PULocationID AS pickup_location, COUNT(*) AS trip_count, ROUND(SUM(total_amount), 2) AS total_revenue FROM fsxn_taxi_demo.taxi_data GROUP BY PULocationID ORDER BY total_revenue DESC LIMIT 10

Consideraciones

  • Read-only acceder. Athena lee los datos del volumen de FSx para ONTAP a través del punto de acceso. Los resultados de las consultas de Athena se escriben en el depósito de resultados de Amazon S3, no en el volumen de FSx para ONTAP.

  • Se requiere el origen de Internet. Athena accede a Amazon S3 desde una infraestructura gestionada externa a su VPC. Las llaves aws:SourceVpc y aws:SourceVpce condiciones no están disponibles para las solicitudes de Athena. Debe utilizar un punto de acceso originado en Internet.

  • Formato de archivo. Athena admite Parquet, ORC, JSON, CSV y otros formatos. Los formatos de columnas como Parquet y ORC ofrecen el mejor rendimiento de consulta porque Athena lee solo las columnas a las que se hace referencia en la consulta.

  • Permisos de usuario del sistema de archivos. El usuario del sistema de archivos asociado al punto de acceso debe tener permiso de lectura en los archivos que se consultan.

  • AWS Glue Data Catalog la tabla es reutilizable. Una vez que registre una tabla en AWS Glue Data Catalog, estará disponible para otros servicios de AWS análisis que se integren con ella AWS Glue Data Catalog, como Amazon Redshift Spectrum, AWS Glue Amazon EMR y ETL jobs.

Limpieza

Para evitar cargos continuos, elimine los recursos que creó en este tutorial.

  1. Elimine las tablas y la base de datos de Athena.

    DROP TABLE IF EXISTS fsxn_taxi_demo.taxi_data; DROP TABLE IF EXISTS fsxn_taxi_demo.yellow_taxi_trips; DROP DATABASE IF EXISTS fsxn_taxi_demo CASCADE;
  2. Elimine el AWS Glue rastreador.

    $ aws glue delete-crawler --name fsxn-taxi-crawler
  3. Elimine los datos de muestra del volumen FSx para ONTAP.

    $ aws s3 rm s3://my-ap-alias-ext-s3alias/taxi-data/yellow_tripdata_2024-01.parquet