View a markdown version of this page

Consulte arquivos com SQL usando o Amazon Athena - FSx para ONTAP

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Consulte arquivos com SQL usando o Amazon Athena

Os sistemas corporativos geralmente produzem resultados baseados em arquivos — exportações de registros, extrações de transações, instantâneos de inventário, descartes de arquivos entre sistemas — que chegam a um compartilhamento de arquivos NFS ou SMB.

Com um ponto de acesso Amazon S3 conectado ao volume FSx for ONTAP, o Amazon Athena consulta os arquivos no local. Seus aplicativos e usuários continuam gravando no volume via NFS ou SMB da maneira que sempre fizeram, e os analistas executam o SQL padrão com base nesses dados por meio do ponto de acesso. Como um volume FSx for ONTAP pode ser acessado simultaneamente por NFS, SMB e pela API do Amazon S3, o mesmo arquivo pode ser produzido por um protocolo e consumido por outro sem uma cópia.

Neste tutorial, você carrega um conjunto de dados de amostra em seu volume FSx for ONTAP por meio de um ponto de acesso do Amazon S3, registra-o no e o consulta com AWS Glue Data Catalog o Amazon Athena.

nota

Este tutorial leva aproximadamente 20 a 30 minutos para ser concluído. Os Serviços da AWS usados incorrem em cobranças pelos recursos que você cria. Se você concluir todas as etapas, incluindo a seção Limpeza imediatamente, o custo esperado é inferior a $1 no Leste dos EUA (Norte da Virgínia) Região da AWS. Essa estimativa não inclui cobranças contínuas do FSx para o volume do ONTAP em si.

Pré-requisitos

Antes de começar, você deve ter o seguinte:

  • Um volume FSx for ONTAP com um ponto de acesso Amazon S3 conectado. O ponto de acesso deve ter uma origem de rede na Internet. Para obter instruções sobre como criar um ponto de acesso, consulteCriar um ponto de acesso.

  • Um grupo de trabalho do Athena configurado com um local de resultados de consulta. O Athena grava os resultados da consulta em um bucket do Amazon S3, não no volume FSx for ONTAP. Se você não tiver um grupo de trabalho, poderá usar o grupo de primary trabalho e configurar um local de resultados no console do Athena em Configurações. Para obter mais informações, consulte Gerenciamento de grupos de trabalho no Guia do usuário do Amazon Athena.

  • Uma função do IAM AWS Glue com a política AWSGlueServiceRole gerenciada anexada e uma política embutida que concede acesso ao seu ponto de acesso Amazon S3. Se você não tiver um, use as etapas a seguir.

    1. Salve a seguinte política de confiança comoglue-trust-policy.json. Isso permite AWS Glue assumir o papel.

      { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": {"Service": "glue.amazonaws.com"}, "Action": "sts:AssumeRole" } ] }
    2. Salve a seguinte política de permissões comoglue-s3-policy.json. Ele concede acesso ao ponto de acesso. Substitua regionaccount-id,, e access-point-name por seus 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. Crie a função e anexe as 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
  • Permissões do IAM para executar consultas do Athena e acessar o AWS Glue catálogo de dados.

Importante

O ponto de acesso do Amazon S3 deve usar uma origem de rede na Internet. O Athena acessa o Amazon S3 a partir da infraestrutura gerenciada, não da sua VPC. Os pontos de acesso com origem na rede VPC negam solicitações do Athena.

Etapa 1: Carregar dados de amostra para seu volume FSx for ONTAP

Este tutorial usa os dados de registro de viagens da Comissão de Táxis e Limusines (TLC) de Nova York, um conjunto de dados publicamente disponível de viagens de táxi na cidade de Nova York. Os dados estão no formato Apache Parquet, um formato colunar que o Athena pode consultar com eficiência.

Faça o download de um mês de dados amarelos da viagem de táxi e carregue-os em seu volume FSx for ONTAP por meio do ponto de acesso Amazon S3.

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

Faça o upload do arquivo para o volume FSx for ONTAP usando o alias do ponto de acesso. my-ap-alias-ext-s3aliasSubstitua pelo alias do seu ponto de acesso.

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

Verifique se o arquivo está acessível por meio do ponto de acesso.

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

Etapa 2: Criar um banco de dados no AWS Glue Data Catalog

Crie um banco de dados no AWS Glue Data Catalog para armazenar os metadados da tabela. Você pode criar o banco de dados usando o AWS Glue console, o editor de consultas Athena ou o. AWS CLI

AWS Glue console

  1. Abra o AWS Glue console em https://console.aws.amazon.com/glue/.

  2. No painel de navegação, em Catálogo de dados, escolha Bancos de dados.

  3. Selecione Adicionar banco de dados.

  4. Em Nome, digite fsxn_taxi_demo.

  5. Selecione Criar banco de dados.

Editor de consultas Athena ou AWS CLI

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

Etapa 3: registrar os dados no AWS Glue Data Catalog

Você pode registrar seus dados usando um AWS Glue rastreador (recomendado) ou uma CREATE EXTERNAL TABLE instrução manual no Athena.

Opção A: use um AWS Glue rastreador (recomendado)

Um AWS Glue rastreador descobre automaticamente o esquema dos seus dados e cria uma tabela no. AWS Glue Data Catalog Essa é a abordagem recomendada porque o rastreador infere os tipos de coluna corretos dos metadados do arquivo Parquet.

  1. Crie um rastreador que aponte para o alias do ponto de acesso. my-ap-alias-ext-s3aliasSubstitua pelo alias do seu ponto de acesso e my-glue-role-arn pelo ARN da AWS Glue sua função do 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. Execute o crawler do .

    $ aws glue start-crawler --name fsxn-taxi-crawler
  3. Verifique o status do rastreador. O rastreador normalmente é concluído em um a dois minutos.

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

    Quando o rastreador termina, o estado é READY e o status é. SUCCEEDED O rastreador cria uma tabela chamada taxi_data (derivada do nome da pasta) no banco de dados. fsxn_taxi_demo

Opção B: criar uma tabela manualmente no Athena

Se você já conhece o esquema dos seus dados, pode criar a tabela diretamente no Athena usando CREATE EXTERNAL TABLE uma instrução. Use o alias do ponto de acesso na 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

Os tipos de coluna devem corresponder aos tipos no arquivo Parquet. Para esse conjunto de dados, campos como passenger_count e VendorID são armazenados como bigint (INT64) no arquivo Parquet, não. double Se os tipos não corresponderem, o Athena retornará um HIVE_BAD_DATA erro. Usar um AWS Glue rastreador (Opção A) evita esse problema porque o rastreador infere automaticamente os tipos corretos.

Etapa 4: consulte seus dados

Abra o editor de consultas Athena ou use o AWS CLI para executar consultas SQL em seus dados FSx for ONTAP. Os exemplos a seguir usam a tabela criada pelo AWS Glue crawler ()taxi_data. Se você criou a tabela manualmente, taxi_data substitua poryellow_taxi_trips.

Conte o total de viagens e calcule as médias

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

Resultado do exemplo:

total de viagens média de distâncias_milhas avg_total_usd avg_passengers
2964624 3,65 26,80 1.3

Encontre os horários de coleta mais movimentados

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

Encontre os locais de coleta com maior receita

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

Considerações

  • Read-only acesso. O Athena lê os dados do seu volume FSx for ONTAP por meio do ponto de acesso. Os resultados da consulta do Athena são gravados no bucket de resultados do Amazon S3, não no volume FSx for ONTAP.

  • É necessária uma origem na Internet. Athena acessa o Amazon S3 a partir de uma infraestrutura gerenciada fora da sua VPC. As chaves de aws:SourceVpce condição aws:SourceVpc e não estão disponíveis para solicitações do Athena. Você deve usar um ponto de acesso de origem na Internet.

  • Formato de arquivo. O Athena é compatível com Parquet, ORC, JSON, CSV e outros formatos. Formatos colunares, como Parquet e ORC, oferecem o melhor desempenho de consulta porque o Athena lê somente as colunas referenciadas na sua consulta.

  • Permissões de usuário do sistema de arquivos. O usuário do sistema de arquivos associado ao ponto de acesso deve ter permissão de leitura nos arquivos que estão sendo consultados.

  • AWS Glue Data Catalog a mesa é reutilizável. Depois de registrar uma tabela no AWS Glue Data Catalog, ela estará disponível para outros serviços de AWS análise que se integram ao AWS Glue Data Catalog, como Amazon Redshift Spectrum, AWS Glue Amazon EMR e tarefas de ETL.

Limpeza

Para evitar cobranças contínuas, exclua os recursos que você criou neste tutorial.

  1. Elimine as tabelas e o banco de dados do 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. Exclua o AWS Glue rastreador.

    $ aws glue delete-crawler --name fsxn-taxi-crawler
  3. Exclua os dados de amostra do volume FSx for ONTAP.

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