Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Menanyakan data Lensa Penyimpanan S3 dengan alat analitik
Sebelum Anda dapat menanyakan data Lensa Penyimpanan S3 yang diekspor ke Tabel S3 menggunakan layanan AWS analitik seperti Amazon Athena atau Amazon EMR, Anda harus mengaktifkan integrasi analitik pada bucket tabel AWS`aws-s3` yang dikelola dan mengonfigurasi izin. AWS Lake Formation
penting
Mengaktifkan integrasi analitik pada bucket tabel “aws-s3" adalah langkah wajib yang sering terlewatkan. Tanpa konfigurasi ini, Anda tidak akan dapat menanyakan tabel Lensa Penyimpanan S3 Anda menggunakan layanan AWS analitik.
Prasyarat
Sebelum Anda mulai, pastikan Anda memiliki:
-
Konfigurasi Lensa Penyimpanan S3 dengan ekspor Tabel S3 diaktifkan. Untuk informasi selengkapnya, lihat Mengekspor metrik Lensa Penyimpanan S3 ke Tabel S3.
-
Akses ke Amazon Athena atau layanan analitik lainnya.
-
Menunggu 24-48 jam setelah memungkinkan ekspor untuk data pertama tersedia.
Ikhtisar integrasi
Setelah mengaktifkan ekspor Tabel S3 dan menyiapkan integrasi analitik, Anda dapat melakukan kueri data Lensa Penyimpanan S3 menggunakan layanan AWS analitik seperti Amazon Athena, Amazon Redshift, dan Amazon EMR. Ini memungkinkan Anda untuk melakukan analisis kustom, membuat dasbor, dan memperoleh wawasan dari data penyimpanan Anda menggunakan SQL standar.
Pertanyaan dengan Amazon Athena
Amazon Athena adalah layanan kueri interaktif tanpa server yang memudahkan analisis data menggunakan SQL standar. Gunakan langkah-langkah berikut untuk menanyakan data Lensa Penyimpanan S3 di Athena.
catatan
Dalam semua contoh kueri, ganti lens_my-config_exp dengan namespace konfigurasi Lensa Penyimpanan Anda yang sebenarnya. Untuk informasi selengkapnya tentang penamaan namespace, lihat. Penamaan tabel untuk ekspor Lensa Penyimpanan S3 ke Tabel S3
Contoh: Kueri konsumen penyimpanan teratas
Kueri berikut mengidentifikasi 10 bucket teratas berdasarkan konsumsi penyimpanan:
SELECT bucket_name, storage_class, SUM(storage_bytes) / POWER(1024, 3) AS storage_gb, SUM(object_count) AS objects FROM "s3tablescatalog/aws-s3"."lens_my-config_exp"."default_storage_metrics" WHERE report_time = ( SELECT MAX(report_time) FROM "s3tablescatalog/aws-s3"."lens_my-config_exp"."default_storage_metrics" ) AND record_type = 'BUCKET' AND bucket_name != '' GROUP BY bucket_name, storage_class ORDER BY storage_gb DESC LIMIT 10
Contoh: Menganalisis pertumbuhan penyimpanan dari waktu ke waktu
Kueri berikut menganalisis pertumbuhan penyimpanan selama 30 hari terakhir:
SELECT CAST(report_time AS date) AS report_date, SUM(storage_bytes) / POWER(1024, 3) AS total_storage_gb FROM "s3tablescatalog/aws-s3"."lens_my-config_exp"."default_storage_metrics" WHERE report_time >= current_date - interval '30' day AND record_type = 'ACCOUNT' GROUP BY CAST(report_time AS date) ORDER BY report_date DESC;
Contoh: Identifikasi unggahan multipart yang tidak lengkap
Kueri berikut menemukan bucket dengan unggahan multipart yang tidak lengkap yang lebih lama dari 7 hari:
SELECT bucket_name, SUM(incomplete_mpu_storage_older_than_7_days_bytes) / POWER(1024, 3) AS wasted_storage_gb, SUM(incomplete_mpu_object_older_than_7_days_count) AS wasted_objects FROM "s3tablescatalog/aws-s3"."lens_my-config_exp"."default_storage_metrics" WHERE report_time = ( SELECT MAX(report_time) FROM "s3tablescatalog/aws-s3"."lens_my-config_exp"."default_storage_metrics" ) AND record_type = 'BUCKET' AND incomplete_mpu_storage_older_than_7_days_bytes > 0 GROUP BY bucket_name ORDER BY wasted_storage_gb DESC;
Contoh: Temukan kandidat data dingin
Kueri berikut mengidentifikasi awalan tanpa aktivitas dalam 100 hari terakhir yang disimpan dalam tingkatan penyimpanan panas:
WITH recent_activity AS ( SELECT DISTINCT bucket_name, record_value AS prefix_path FROM "s3tablescatalog/aws-s3"."lens_my-config_exp"."expanded_prefixes_activity_metrics" WHERE report_time >= current_date - interval '100' day AND record_type = 'PREFIX' AND all_request_count > 0 ) SELECT s.bucket_name, s.record_value AS prefix_path, s.storage_class, SUM(s.storage_bytes) / POWER(1024, 3) AS storage_gb FROM "s3tablescatalog/aws-s3"."lens_my-config_exp"."expanded_prefixes_storage_metrics" s LEFT JOIN recent_activity r ON s.bucket_name = r.bucket_name AND s.record_value = r.prefix_path WHERE s.report_time = ( SELECT MAX(report_time) FROM "s3tablescatalog/aws-s3"."lens_my-config_exp"."expanded_prefixes_storage_metrics" ) AND s.record_type = 'PREFIX' AND s.storage_class IN ('STANDARD', 'REDUCED_REDUNDANCY') AND s.storage_bytes > 1073741824 -- > 1GB AND r.prefix_path IS NULL -- No recent activity GROUP BY s.bucket_name, s.record_value, s.storage_class ORDER BY storage_gb DESC LIMIT 20;
Contoh: Menganalisis pola permintaan
Kueri berikut menganalisis pola permintaan untuk memahami frekuensi akses:
SELECT bucket_name, SUM(all_request_count) AS total_requests, SUM(get_request_count) AS get_requests, SUM(put_request_count) AS put_requests, ROUND(100.0 * SUM(get_request_count) / NULLIF(SUM(all_request_count), 0), 2) AS get_percentage, SUM(downloaded_bytes) / POWER(1024, 3) AS downloaded_gb FROM "s3tablescatalog/aws-s3"."lens_my-config_exp"."default_activity_metrics" WHERE report_time >= current_date - interval '7' day AND record_type = 'BUCKET' AND bucket_name != '' GROUP BY bucket_name HAVING SUM(all_request_count) > 0 ORDER BY total_requests DESC LIMIT 10;
Menanyakan dengan Apache Spark di Amazon EMR
Amazon EMR menyediakan kerangka kerja Hadoop terkelola yang membuatnya mudah untuk memproses sejumlah besar data menggunakan Apache Spark. Anda dapat menggunakan konektor Iceberg untuk membaca tabel Lensa Penyimpanan S3 secara langsung.
Baca Tabel S3 dengan Spark
Gunakan kode Python berikut untuk membaca data S3 Storage Lens dengan Spark:
from pyspark.sql import SparkSession spark = SparkSession.builder \ .appName("S3StorageLensAnalysis") \ .config("spark.sql.catalog.s3tablescatalog", "org.apache.iceberg.spark.SparkCatalog") \ .config("spark.sql.catalog.s3tablescatalog.catalog-impl", "org.apache.iceberg.aws.glue.GlueCatalog") \ .getOrCreate() # Read S3 Storage Lens data df = spark.read \ .format("iceberg") \ .load("s3tablescatalog/aws-s3.lens_my-config_exp.default_storage_metrics") # Analyze data df.filter("record_type = 'BUCKET'") \ .groupBy("bucket_name", "storage_class") \ .sum("storage_bytes") \ .orderBy("sum(storage_bytes)", ascending=False) \ .show(10)
Praktik terbaik pengoptimalan kueri
Ikuti praktik terbaik ini untuk mengoptimalkan kinerja kueri dan mengurangi biaya:
-
Filter menurut report_time — Selalu sertakan filter tanggal untuk mengurangi jumlah data yang dipindai. Ini sangat penting untuk tabel dengan periode retensi yang lama.
WHERE report_time >= current_date - interval '7' day -
Gunakan filter record_type — Tentukan tingkat agregasi yang sesuai (ACCOUNT, BUCKET, PREFIX) untuk menanyakan hanya data yang Anda butuhkan.
WHERE record_type = 'BUCKET' -
Sertakan klausa LIMIT — Gunakan LIMIT untuk kueri eksplorasi untuk mengontrol ukuran hasil dan mengurangi biaya kueri.
LIMIT 100 -
Filter catatan kosong - Gunakan kondisi untuk mengecualikan catatan kosong atau nilai nol.
WHERE storage_bytes > 0 -
Gunakan data terbaru — Saat menganalisis status saat ini, filter untuk report_time terbaru untuk menghindari pemindaian data historis.
WHERE report_time = (SELECT MAX(report_time) FROM table_name)
Contoh pola kueri yang dioptimalkan
Kueri berikut menunjukkan praktik terbaik untuk pengoptimalan:
SELECT bucket_name, SUM(storage_bytes) / POWER(1024, 3) AS storage_gb FROM "s3tablescatalog/aws-s3"."lens_my-config_exp"."default_storage_metrics" WHERE report_time >= current_date - interval '7' day -- Date filter AND record_type = 'BUCKET' -- Record type filter AND storage_bytes > 0 -- Non-empty filter AND bucket_name != '' -- Non-empty filter GROUP BY bucket_name ORDER BY storage_gb DESC LIMIT 100; -- Result limit
Pemecahan masalah
Query tidak mengembalikan hasil
Masalah: Kueri Anda berhasil diselesaikan tetapi tidak mengembalikan hasil.
Solusi:
-
Verifikasi bahwa data tersedia dengan memeriksa report_time terbaru:
SELECT MAX(report_time) AS latest_data FROM "s3tablescatalog/aws-s3"."lens_my-config_exp"."default_storage_metrics"; -
Pastikan Anda menggunakan nama namespace yang benar. Gunakan
SHOW TABLES IN `lens_my-config_exp`;untuk daftar tabel yang tersedia. -
Tunggu 24-48 jam setelah mengaktifkan ekspor Tabel S3 agar data pertama tersedia.
Akses kesalahan ditolak
Masalah: Anda menerima kesalahan akses ditolak saat menjalankan kueri.
Solusi: Verifikasi bahwa AWS Lake Formation izin dikonfigurasi dengan benar. Untuk informasi selengkapnya, lihat Mengintegrasikan Tabel Amazon S3 AWS dengan layanan analitik.
Langkah selanjutnya
-
Pelajari tentang Menggunakan asisten AI dengan tabel Lensa Penyimpanan S3
-
Tinjau definisi metrik Glosarium metrik Lensa Penyimpanan Amazon S3 untuk
-
Jelajahi Kasus penggunaan metrik Lensa Penyimpanan Amazon S3 untuk ide analisis lebih lanjut
-
Pelajari tentang Amazon Athena untuk kueri tanpa server