Amazon Athena: SQL Tanpa Pelayan pada S3
Tanya data S3 secara langsung dengan SQL standard dalam Athena, optimumkan menggunakan format berasaskan lajur seperti Parquet dan ORC, serta gunakan pembahagian untuk mengawal kos.
Amazon Athena: SQL Tanpa Pelayan pada S3 ialah pelajaran AWS Solutions Architect percuma di CoddyKit. Ini ialah pelajaran 3 daripada 4. Sebanyak 3 pelajaran dalam laluan pembelajaran ini boleh dibaca sepenuhnya secara percuma — selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan praktikal dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran AWS Solutions Architect, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus AWS Solutions Architect merangkumi sejumlah 4 pelajaran.
Apakah Amazon Athena?
Amazon Athena ialah perkhidmatan pertanyaan interaktif tanpa pelayan yang membolehkan anda menjalankan SQL standard secara terus terhadap data yang disimpan dalam Amazon S3. Tiada pelayan yang perlu diperuntukkan, tiada kluster yang perlu diuruskan, dan anda hanya membayar data yang diimbas bagi setiap pertanyaan (kira-kira $5 bagi setiap TB yang diimbas). Athena menggunakan Presto di bahagian belakang dan berintegrasi secara natif dengan Glue Data Catalogue untuk metadata jadual.
Menyediakan Athena: Kumpulan Kerja dan Lokasi Output
Sebelum menjalankan pertanyaan, konfigurasikan Athena Workgroup dan tentukan laluan S3 untuk output hasil pertanyaan. Kumpulan kerja membolehkan anda mengasingkan sejarah pertanyaan dan penjejakan kos antara pasukan, menguatkuasakan penyulitan pada hasil, serta menetapkan had imbasan data bagi setiap pertanyaan untuk mengelakkan kos yang tidak terkawal. Setiap hasil pertanyaan ditulis sebagai CSV ke dalam bucket output S3 yang dikonfigurasikan.
# Create a workgroup with an encrypted output location
aws athena create-work-group \
--name analytics-team \
--configuration '{
"ResultConfiguration": {
"OutputLocation": "s3://athena-results-123/analytics-team/",
"EncryptionConfiguration": {"EncryptionOption": "SSE_S3"}
},
"EnforceWorkGroupConfiguration": true,
"PublishCloudWatchMetricsEnabled": true,
"BytesScannedCutoffPerQuery": 10737418240
}'Menjalankan Pertanyaan Pertama Anda
Arahkan Athena kepada pangkalan data Glue Data Catalogue dan jalankan ANSI SQL. Athena menyokong SELECT, JOIN, GROUP BY, fungsi tetingkap dan CTE. Anda juga boleh menggunakan CREATE TABLE AS SELECT (CTAS) untuk menyimpan hasil pertanyaan sebagai jadual baharu dalam format Parquet, sekali gus merealisasikan hasil perantaraan bagi mempercepat pertanyaan seterusnya.
-- Query total sales by month from partitioned S3 data
SELECT
year,
month,
SUM(order_total) AS monthly_revenue
FROM my_db.curated_sales
WHERE year = '2024'
GROUP BY year, month
ORDER BY month;
-- CTAS: materialise result as Parquet for reuse
CREATE TABLE my_db.monthly_revenue
WITH (format = 'PARQUET', external_location = 's3://my-data-lake-123/curated/monthly_revenue/')
AS
SELECT year, month, SUM(order_total) AS revenue
FROM my_db.curated_sales
GROUP BY year, month;Pengoptimuman Kos: Pemangkasan Partition
Athena mengenakan caj berdasarkan TB data yang diimbas. Pengurangan kos yang paling berkesan ialah pemangkasan partition: sentiasa sertakan lajur partition dalam klausa WHERE anda. Jika data dipartitionkan mengikut year/month/day, penapisan pada lajur ini menghalang Athena daripada mengimbas partition lain. Tanpa penapis partition pada jadual berskala petabait, pertanyaan mudah boleh menelan kos ratusan dolar.
-- EXPENSIVE: No partition filter -> scans all data
SELECT * FROM my_db.curated_sales WHERE customer_id = '12345';
-- CHEAP: Partition filter applied -> scans only Jan 2024
SELECT * FROM my_db.curated_sales
WHERE year = '2024' AND month = '01' AND customer_id = '12345';Pengoptimuman Kos: Format Berasaskan Lajur
Menyimpan data dalam Apache Parquet atau ORC dan bukannya CSV atau JSON mengurangkan secara drastik jumlah data yang diimbas oleh Athena bagi setiap pertanyaan. Pertanyaan berasaskan lajur yang menyentuh 3 daripada 50 lajur hanya mengimbas data bagi 3 lajur tersebut pada cakera. Digabungkan dengan pemampatan terbina dalam (Snappy, Zstd), fail Parquet biasanya 5–10 kali lebih kecil daripada CSV setara, lalu meningkatkan penjimatan kos.
-- After converting raw CSV to Parquet:
-- CSV version: 500 GB table, query scans 500 GB -> $2.50
-- Parquet version: same data compressed to 50 GB,
-- query reads only 2 columns -> scans ~2 GB -> $0.01
-- Verify table format in Glue Catalogue
SHOW CREATE TABLE my_db.curated_sales;Pertanyaan Bersekutu dengan Penyambung Sumber Data
Athena Federated Query memperluas Athena melangkaui S3 untuk membuat pertanyaan terhadap data dalam RDS, DynamoDB, Redshift, Elasticsearch dan sumber tersuai menggunakan penyambung sumber data berasaskan Lambda. Anda menggunakan fungsi Lambda penyambung daripada Serverless Application Repository, mendaftarkannya sebagai sumber data Athena, kemudian membuat pertanyaan merentasi jadual S3 dan pangkalan data langsung dalam satu SQL JOIN — tanpa memindahkan sebarang data terlebih dahulu.
-- Federated query: join S3 Parquet with live RDS table
SELECT s.order_id, s.total, c.email
FROM my_db.curated_sales s
JOIN rds_lambda.prod_db.customers c
ON s.customer_id = c.id
WHERE s.year = '2024' AND s.month = '01';Integrasi Athena dan QuickSight
Amazon QuickSight bersambung terus kepada Athena sebagai sumber data, membolehkan penganalisis perniagaan membina papan pemuka interaktif daripada data S3 tanpa pangkalan data perantara. QuickSight menggunakan SPICE (Super-fast, Parallel, In-memory Calculation Engine) untuk menyimpan hasil pertanyaan Athena dalam cache supaya papan pemuka dipaparkan dengan pantas. Susunan BI tanpa pelayan ini (S3 + Glue + Athena + QuickSight) ialah corak peperiksaan yang biasa untuk analitik yang menjimatkan kos.
Penalaan Prestasi Pertanyaan Athena
Selain partition dan format berasaskan lajur, tala pertanyaan Athena dengan: memecahkan fail besar (sasaran 128 MB–1 GB bagi setiap fail untuk pemprosesan selari), menggunakan pengumpulan bagi lajur yang kerap digabungkan, mengelakkan SELECT *, serta menggunakan fungsi agregat anggaran seperti approx_distinct() dan approx_percentile() apabila nilai tepat tidak diperlukan. Teknik ini mengurangkan kos dan kependaman.
-- Use approx_distinct for fast cardinality estimate
SELECT
year,
approx_distinct(customer_id) AS approx_unique_customers
FROM my_db.curated_sales
WHERE year = '2024'
GROUP BY year;Mengawal Akses kepada Athena
Athena berintegrasi dengan IAM untuk kawalan akses: pengguna memerlukan kebenaran untuk menjalankan pertanyaan Athena (athena:StartQueryExecution), mengakses bucket output S3 dan membaca data S3 asas. Untuk akses lajur dan baris berbutir halus, gabungkan Athena dengan Lake Formation. Anda juga boleh mengehadkan kumpulan kerja kepada pangkalan data tertentu menggunakan kunci syarat IAM pada ARN kumpulan kerja.
# Minimum IAM policy for an Athena analyst
{
"Effect": "Allow",
"Action": [
"athena:StartQueryExecution",
"athena:GetQueryExecution",
"athena:GetQueryResults",
"athena:StopQueryExecution",
"glue:GetDatabase",
"glue:GetTable",
"glue:GetPartitions",
"s3:GetObject",
"s3:PutObject"
],
"Resource": "*"
}Menyimpan Hasil Pertanyaan dan Pertanyaan Berjadual
Hasil pertanyaan Athena disimpan sebagai fail CSV dalam S3 dan dicache selama 7 hari, supaya menjalankan semula pertanyaan yang sama dalam tempoh tersebut tidak mengimbas semula data. Untuk keperluan pelaporan berulang, gunakan Athena Scheduled Queries bagi menjalankan pertanyaan mengikut jadual cron dan menyimpan hasil ke lokasi S3 baharu atau terus ke dalam jadual. Sebagai alternatif, cetuskan pertanyaan Athena daripada mesin keadaan Step Functions atau peraturan EventBridge.
# Start an Athena query via CLI and retrieve results
QUERY_ID=$(aws athena start-query-execution \
--query-string 'SELECT COUNT(*) FROM my_db.curated_sales WHERE year=2024' \
--work-group analytics-team \
--query 'QueryExecutionId' --output text)
# Wait and fetch results
aws athena get-query-results --query-execution-id $QUERY_IDAthena berbanding Redshift: Memilih Alat yang Tepat
Untuk peperiksaan SAA-C03, ketahui masa yang sesuai untuk mencadangkan Athena berbanding Redshift. Pilih Athena untuk pertanyaan ad hoc yang jarang dilakukan pada S3 tanpa infrastruktur untuk diuruskan. Pilih Redshift apabila anda memerlukan masa respons kurang daripada satu saat untuk gabungan kompleks, mempunyai pasukan analitik khusus yang menjalankan ratusan pertanyaan serentak, atau mahu menggunakan Redshift Spectrum untuk memperluas gudang data dengan data S3. Petunjuk utama ialah kekerapan dan kerumitan pertanyaan.
Semakan Pantas
Uji pemahaman anda tentang konsep AWS Solutions Architect (SAA-C03) daripada pelajaran ini.
Ringkasan Pelajaran
Dalam pelajaran ini, anda telah mempelajari bahawa: Athena mengenakan caj berdasarkan TB yang diimbas, jadi pemangkasan partition dan format Parquet ialah kawalan kos yang penting, Athena Federated Query memperluas SQL kepada sumber data bukan S3 melalui penyambung Lambda, dan Athena paling sesuai untuk pertanyaan ad hoc manakala Redshift sesuai untuk analitik serentak berskala tinggi. Seterusnya, kita akan meneroka Kinesis untuk penstriman dan analitik data masa nyata.
Pelajari AWS Solutions Architect dengan tutor kecerdasan buatan — percuma
Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.
- Kursus
- 30
- Pelajaran
- 120
Soalan Lazim
Adakah pelajaran “Amazon Athena: SQL Tanpa Pelayan pada S3” percuma?
Ya — sebanyak 3 pelajaran dalam laluan pembelajaran AWS Solutions Architect, termasuk “Amazon Athena: SQL Tanpa Pelayan pada S3”, boleh dibaca sepenuhnya secara percuma di web ini. Selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan interaktif dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Kursus AWS Solutions Architect merangkumi sejumlah 4 pelajaran.
Apakah yang akan saya pelajari dalam “Amazon Athena: SQL Tanpa Pelayan pada S3”?
Tanya data S3 secara langsung dengan SQL standard dalam Athena, optimumkan menggunakan format berasaskan lajur seperti Parquet dan ORC, serta gunakan pembahagian untuk mengawal kos. Anda berlatih AWS Solutions Architect menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.
Adakah saya memerlukan pengalaman untuk memulakan AWS Solutions Architect?
Tiada pengalaman terdahulu diperlukan. Pembelajaran AWS Solutions Architect di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 3 daripada 4.
Berapa lamakah pelajaran “Amazon Athena: SQL Tanpa Pelayan pada S3” diambil?
Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.
Bolehkah saya menulis dan menjalankan kod dalam pelajaran AWS Solutions Architect ini?
Ya. Setiap pelajaran AWS Solutions Architect menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.
Semua pelajaran dalam kursus ini
- Membina Tasik Data pada S3
- AWS Glue: ETL dan Katalog Data
- Amazon Athena: SQL Tanpa Pelayan pada S3
- Kinesis Streams, Firehose dan Analitis Masa Nyata