Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Kueri file dengan SQL menggunakan Amazon Athena
Sistem perusahaan sering menghasilkan output berbasis file - ekspor log, ekstrak transaksi, snapshot inventaris, penurunan file antar sistem - yang mendarat di berbagi file NFS atau SMB.
Dengan jalur akses Amazon S3 yang dilampirkan ke FSx untuk volume ONTAP, Amazon Athena menanyakan file di tempatnya. Aplikasi dan pengguna Anda terus menulis ke volume melalui NFS atau SMB seperti yang selalu mereka miliki, dan analis menjalankan SQL standar terhadap data tersebut melalui titik akses. Karena fsX untuk volume ONTAP dapat diakses secara bersamaan melalui NFS, SMB, dan Amazon S3 API, file yang sama dapat diproduksi oleh satu protokol dan dikonsumsi oleh protokol lain tanpa salinan.
Dalam tutorial ini, Anda mengunggah kumpulan data sampel ke FSx Anda untuk volume ONTAP melalui jalur akses Amazon S3, mendaftarkannya di, dan menanyakannya AWS Glue Data Catalog dengan Amazon Athena.
catatan
Tutorial ini membutuhkan waktu sekitar 20 hingga 30 menit untuk menyelesaikannya. Yang Layanan AWS digunakan dikenakan biaya untuk sumber daya yang Anda buat. Jika Anda menyelesaikan semua langkah, termasuk bagian Pembersihan segera, biaya yang diharapkan kurang dari $1 di AS Timur (Virginia Utara). Wilayah AWS Perkiraan ini tidak termasuk biaya berkelanjutan untuk FSx untuk volume ONTAP itu sendiri.
Prasyarat
Sebelum Anda mulai, pastikan Anda memiliki yang berikut:
FSx untuk volume ONTAP dengan titik akses Amazon S3 terpasang. Titik akses harus memiliki asal jaringan internet. Untuk petunjuk tentang cara membuat titik akses, lihatMembuat titik akses.
Workgroup Athena yang dikonfigurasi dengan lokasi hasil kueri. Athena menulis hasil kueri ke bucket Amazon S3, bukan ke FSx untuk volume ONTAP. Jika Anda tidak memiliki workgroup, Anda dapat menggunakan
primaryworkgroup dan mengonfigurasi lokasi hasil di konsol Athena di bawah Pengaturan. Untuk informasi selengkapnya, lihat Mengelola grup kerja di Panduan Pengguna Amazon Athena.Peran IAM AWS Glue dengan kebijakan
AWSGlueServiceRoleterkelola yang dilampirkan dan kebijakan inline yang memberikan akses ke jalur akses Amazon S3 Anda. Jika Anda tidak memilikinya, gunakan langkah-langkah berikut.Simpan kebijakan kepercayaan berikut sebagai
glue-trust-policy.json. Hal ini AWS Glue memungkinkan untuk mengambil peran.{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": {"Service": "glue.amazonaws.com"}, "Action": "sts:AssumeRole" } ] }Simpan kebijakan izin berikut sebagai
glue-s3-policy.json. Ini memberikan akses ke titik akses. Gantiregion,, danaccount-iddengan nilai-nilai Anda.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/*" ] } ] }Buat peran dan lampirkan kebijakan.
$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
Izin IAM untuk menjalankan kueri Athena dan mengakses Katalog Data. AWS Glue
penting
Jalur akses Amazon S3 harus menggunakan asal jaringan internet. Athena mengakses Amazon S3 dari infrastruktur terkelola, bukan dari VPC Anda. titik akses dengan asal jaringan VPC menolak permintaan dari Athena.
Langkah 1: Unggah data sampel ke FSx Anda untuk volume ONTAP
Tutorial ini menggunakan Data Rekam Perjalanan NYC Taxi and Limousine Commission (TLC), kumpulan data perjalanan
Unduh satu bulan data perjalanan taksi kuning dan unggah ke FSx Anda untuk volume ONTAP melalui jalur akses Amazon S3.
$curl -O https://d37ci6vzurychx.cloudfront.net/trip-data/yellow_tripdata_2024-01.parquet
Unggah file ke FSx Anda untuk volume ONTAP menggunakan alias titik akses. Ganti dengan alias titik akses Anda.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
Verifikasi file dapat diakses melalui jalur akses.
$aws s3 ls s3://my-ap-alias-ext-s3alias/taxi-data/2024-01-23 02:18:13 49961641 yellow_tripdata_2024-01.parquet
Langkah 2: Buat database di AWS Glue Data Catalog
Buat database di AWS Glue Data Catalog untuk menahan metadata tabel. Anda dapat membuat database menggunakan AWS Glue konsol, editor kueri Athena, atau file. AWS CLI
AWS Glue konsol
Buka AWS Glue konsol di https://console.aws.amazon.com/glue/
. Di panel navigasi, di bawah Katalog Data, pilih Database.
Pilih Add database (Tambahkan basis data).
Untuk Nama, masukkan
.fsxn_taxi_demoPilih Buat basis data.
Editor kueri Athena atau AWS CLI
$aws athena start-query-execution \ --query-string "CREATE DATABASE IF NOT EXISTSfsxn_taxi_demo" \ --work-groupprimary
Langkah 3: Daftarkan data di AWS Glue Data Catalog
Anda dapat mendaftarkan data menggunakan AWS Glue crawler (disarankan) atau CREATE EXTERNAL TABLE pernyataan manual di Athena.
Opsi A: Gunakan AWS Glue crawler (disarankan)
AWS Glue Crawler secara otomatis menemukan skema data Anda dan membuat tabel di file. AWS Glue Data Catalog Ini adalah pendekatan yang disarankan karena crawler menyimpulkan jenis kolom yang benar dari metadata file Parket.
Buat crawler yang menunjuk ke alias access point. Ganti
dengan alias titik akses Anda danmy-ap-alias-ext-s3aliasdengan ARN peran IAM AWS Glue Anda.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/"}]}'Jalankan crawler.
$aws glue start-crawler --namefsxn-taxi-crawlerPeriksa status crawler. Crawler biasanya selesai dalam satu hingga dua menit.
$aws glue get-crawler --namefsxn-taxi-crawler\ --query "Crawler.{State:State,Status:LastCrawl.Status}"Ketika crawler selesai, statusnya
READYdan statusnya.SUCCEEDEDCrawler membuat tabel bernamataxi_data(berasal dari nama folder) dalamfsxn_taxi_demodatabase.
Opsi B: Buat tabel secara manual di Athena
Jika Anda sudah mengetahui skema data Anda, Anda dapat membuat tabel langsung di Athena menggunakan CREATE EXTERNAL TABLE pernyataan. Gunakan alias titik akses dalam LOCATION klausa.
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/'
catatan
Jenis kolom harus sesuai dengan jenis dalam file Parket. Untuk kumpulan data ini, bidang seperti passenger_count dan VendorID disimpan sebagai bigint (INT64) di file Parket, bukan. double Jika jenis tidak cocok, Athena mengembalikan kesalahan. HIVE_BAD_DATA Menggunakan AWS Glue crawler (Opsi A) menghindari masalah ini karena crawler menyimpulkan tipe yang benar secara otomatis.
Langkah 4: Kueri data Anda
Buka editor kueri Athena atau gunakan AWS CLI untuk menjalankan kueri SQL terhadap FSx Anda untuk data ONTAP. Contoh berikut menggunakan tabel yang dibuat oleh AWS Glue crawler (taxi_data). Jika Anda membuat tabel secara manual, ganti taxi_data denganyellow_taxi_trips.
Hitung total perjalanan dan hitung rata-rata
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
Contoh output:
| total_trips | avg_distance_miles | avg_total_usd | avg_penumpang |
|---|---|---|---|
| 2964624 | 3,65 | 26.80 | 1.3 |
Temukan jam penjemputan tersibuk
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
Temukan lokasi pengambilan pendapatan tertinggi
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
Pertimbangan-pertimbangan
Read-only akses. Athena membaca data dari FSx Anda untuk volume ONTAP melalui titik akses. Hasil kueri Athena ditulis ke bucket hasil Amazon S3, bukan kembali ke FSx untuk volume ONTAP.
Asal internet diperlukan. Athena mengakses Amazon S3 dari infrastruktur terkelola di luar VPC Anda. Kunci
aws:SourceVpcdanaws:SourceVpcekondisi tidak tersedia untuk permintaan Athena. Anda harus menggunakan titik akses internet-origin.Format file. Athena mendukung Parket, ORC, JSON, CSV, dan format lainnya. Format kolom seperti Parket dan ORC memberikan kinerja kueri terbaik karena Athena hanya membaca kolom yang direferensikan dalam kueri Anda.
Izin pengguna sistem file. Pengguna sistem file yang terkait dengan titik akses harus memiliki izin membaca pada file yang ditanyakan.
AWS Glue Data Catalog meja dapat digunakan kembali. Setelah Anda mendaftarkan tabel di AWS Glue Data Catalog, itu tersedia untuk layanan AWS analitik lain yang terintegrasi dengan AWS Glue Data Catalog, seperti Amazon Redshift Spectrum, Amazon EMR, AWS Glue dan pekerjaan ETL.
Bersihkan
Untuk menghindari biaya yang sedang berlangsung, hapus sumber daya yang Anda buat dalam tutorial ini.
Jatuhkan tabel dan database 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;Hapus AWS Glue crawler.
$aws glue delete-crawler --namefsxn-taxi-crawlerHapus data sampel dari FSx Anda untuk volume ONTAP.
$aws s3 rm s3://my-ap-alias-ext-s3alias/taxi-data/yellow_tripdata_2024-01.parquet