Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Mengkueri data S3 Storage Lens dengan alat analitik
Sebelum Anda dapat menanyakan data S3 Storage Lens yang diekspor ke Tabel S3 menggunakan layanan AWS analitik seperti Amazon Athena atau Amazon EMR, Anda harus mengaktifkan integrasi analitik pada bucket tabel `aws-s3` AWS yang dikelola dan mengonfigurasi izin. AWS Lake Formation
penting
Mengaktifkan integrasi analitik pada bucket tabel “aws-s3" adalah langkah wajib yang sering dilewatkan. Tanpa konfigurasi ini, Anda tidak akan dapat menanyakan tabel S3 Storage Lens menggunakan layanan AWS analitik.
Prasyarat
Sebelum memulai, pastikan Anda memiliki:
-
Konfigurasi S3 Storage Lens dengan ekspor Tabel S3 diaktifkan. Untuk informasi selengkapnya, lihat Mengekspor metrik S3 Storage Lens ke Tabel S3.
-
Akses ke Amazon Athena atau layanan analitik lainnya.
-
Menunggu 24-48 jam setelah mengaktifkan ekspor agar data pertama tersedia.
Ikhtisar integrasi
Untuk informasi terperinci tentang mengintegrasikan Tabel S3 dengan layanan AWS analitik, termasuk prasyarat, konfigurasi peran IAM, dan prosedur langkah demi langkah, lihat Meng integrasikan Tabel Amazon S3 dengan layanan AWS analitik.
Setelah mengaktifkan ekspor Tabel S3 dan menyiapkan integrasi analitik, Anda dapat menanyakan data S3 Storage Lens 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.
Menanyakan 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 S3 Storage Lens di Athena.
catatan
Di semua contoh kueri, ganti lens_my-config_exp dengan namespace konfigurasi Lensa Penyimpanan Anda yang sebenarnya. Untuk informasi selengkapnya tentang penamaan namespace, lihatPenamaan tabel untuk ekspor S3 Storage Lens 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: Mengidentifikasi unggahan multibagian 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 di 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;
Kueri 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 S3 Storage Lens secara langsung.
Membaca 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 berikut untuk mengoptimalkan kinerja kueri dan mengurangi biaya:
-
Filter berdasarkan 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 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
Kueri tidak mengembalikan hasil
Masalah: Kueri Anda berhasil diselesaikan tetapi tidak menghasilkan 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.
Kesalahan akses 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 dengan layanan AWS analitik.
Langkah selanjutnya
-
Pelajari tentang Menggunakan asisten AI dengan tabel S3 Storage Lens
-
Tinjau definisi metrik Glosarium metrik Lensa Penyimpanan Amazon S3 for
-
Jelaj Kasus penggunaan metrik Lensa Penyimpanan Amazon S3 ahi untuk lebih banyak ide analisis
-
Pelajari tentang Amazon Athena untuk kueri tanpa server