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
primarytrabalho 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
AWSGlueServiceRolegerenciada 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.Salve a seguinte política de confiança como
glue-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" } ] }Salve a seguinte política de permissões como
glue-s3-policy.json. Ele concede acesso ao ponto de acesso. Substituaregion,, eaccount-idpor seus valores.access-point-name{ "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/*" ] } ] }Crie a função e anexe as políticas.
$aws iam create-role \ --role-namefsxn-tutorial-glue-role\ --assume-role-policy-document file://glue-trust-policy.json aws iam attach-role-policy \ --role-namefsxn-tutorial-glue-role\ --policy-arn arn:aws:iam::aws:policy/service-role/AWSGlueServiceRole aws iam put-role-policy \ --role-namefsxn-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
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. Substitua pelo alias do seu ponto de acesso.my-ap-alias-ext-s3alias
$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
Abra o AWS Glue console em https://console.aws.amazon.com/glue/
. No painel de navegação, em Catálogo de dados, escolha Bancos de dados.
Selecione Adicionar banco de dados.
Em Nome, digite
.fsxn_taxi_demoSelecione Criar banco de dados.
Editor de consultas Athena ou AWS CLI
$aws athena start-query-execution \ --query-string "CREATE DATABASE IF NOT EXISTSfsxn_taxi_demo" \ --work-groupprimary
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.
Crie um rastreador que aponte para o alias do ponto de acesso.
Substitua pelo alias do seu ponto de acesso emy-ap-alias-ext-s3aliaspelo ARN da AWS Glue sua função do IAM.my-glue-role-arn$aws glue create-crawler \ --namefsxn-taxi-crawler\ --rolemy-glue-role-arn\ --database-namefsxn_taxi_demo\ --targets '{"S3Targets": [{"Path": "s3://my-ap-alias-ext-s3alias/taxi-data/"}]}'Execute o crawler do .
$aws glue start-crawler --namefsxn-taxi-crawlerVerifique o status do rastreador. O rastreador normalmente é concluído em um a dois minutos.
$aws glue get-crawler --namefsxn-taxi-crawler\ --query "Crawler.{State:State,Status:LastCrawl.Status}"Quando o rastreador termina, o estado é
READYe o status é.SUCCEEDEDO rastreador cria uma tabela chamadataxi_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:SourceVpcecondiçãoaws:SourceVpce 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.
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;Exclua o AWS Glue rastreador.
$aws glue delete-crawler --namefsxn-taxi-crawlerExclua 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