Buat pipeline layanan ETL untuk memuat data secara bertahap dari Amazon S3 ke Amazon Redshift menggunakan AWS Glue - AWS Prescriptive Guidance

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Buat pipeline layanan ETL untuk memuat data secara bertahap dari Amazon S3 ke Amazon Redshift menggunakan AWS Glue

Rohan Jamadagni dan Arunabha Datta, Amazon Web Services

Ringkasan

Pola ini memberikan panduan tentang cara mengonfigurasi Amazon Simple Storage Service (Amazon S3) untuk kinerja data lake yang optimal, lalu memuat perubahan data tambahan dari Amazon S3 ke Amazon Redshift dengan menggunakan AWS Glue, melakukan operasi ekstrak, transformasi, dan pemuatan (ETL). 

File sumber di Amazon S3 dapat memiliki format yang berbeda, termasuk nilai yang dipisahkan koma (CSV), XML, dan file JSON. Pola ini menjelaskan bagaimana Anda dapat menggunakan AWS Glue untuk mengonversi file sumber menjadi format yang dioptimalkan biaya dan dioptimalkan kinerja seperti Apache Parquet. Anda dapat menanyakan file Parket langsung dari Amazon Athena dan Amazon Redshift Spectrum. Anda juga dapat memuat file Parket ke Amazon Redshift, menggabungkannya, dan membagikan data agregat dengan konsumen, atau memvisualisasikan data dengan menggunakan Amazon. QuickSight

Prasyarat dan batasan

Prasyarat

  • Akun AWS yang aktif.

  • Bucket sumber S3 yang memiliki hak istimewa yang tepat dan berisi file CSV, XHTML, atau JSON.

Asumsi

  • File sumber CSV, XHTML, atau JSON sudah dimuat ke Amazon S3 dan dapat diakses dari akun tempat AWS Glue dan Amazon Redshift dikonfigurasi.

  • Praktik terbaik untuk memuat file, memisahkan file, kompresi, dan menggunakan manifes diikuti, seperti yang dibahas dalam dokumentasi Amazon Redshift.

  • Struktur file sumber tidak berubah.

  • Sistem sumber dapat menelan data ke Amazon S3 dengan mengikuti struktur folder yang ditentukan di Amazon S3.

  • Cluster Amazon Redshift mencakup satu Availability Zone. (Arsitektur ini sesuai karena AWS Lambda, AWS Glue, dan Amazon Athena tidak memiliki server.) Untuk ketersediaan tinggi, snapshot cluster diambil pada frekuensi reguler.

Batasan

Arsitektur

Tumpukan teknologi sumber

  • Bucket S3 dengan file CSV, XML, atau JSON

Tumpukan teknologi target

  • Danau data S3 (dengan penyimpanan file Parket yang dipartisi)

  • Amazon Redshift

Arsitektur target

Arsitektur untuk memuat perubahan tambahan dari Amazon S3 ke Amazon Redshift menggunakan AWS Glue.

Aliran data

Alur data untuk memuat perubahan tambahan dari Amazon S3 ke Amazon Redshift menggunakan AWS Glue.

Alat

  • Amazon S3 - Amazon Simple Storage Service (Amazon S3) Simple Storage Service (Amazon S3) adalah layanan penyimpanan objek yang sangat skalabel. Amazon S3 dapat digunakan untuk berbagai solusi penyimpanan, termasuk situs web, aplikasi seluler, cadangan, dan data lake.

  • AWS Lambda — AWS Lambda memungkinkan Anda menjalankan kode tanpa menyediakan atau mengelola server. AWS Lambda adalah layanan berbasis peristiwa; Anda dapat mengatur kode untuk memulai secara otomatis dari layanan AWS lainnya.

  • Amazon Redshift — Amazon Redshift adalah layanan gudang data skala petabyte yang dikelola sepenuhnya. Dengan Amazon Redshift, Anda dapat menanyakan petabyte data terstruktur dan semi-terstruktur di seluruh gudang data dan data lake menggunakan SQL standar.

  • AWS Glue — AWS Glue adalah layanan ETL yang dikelola sepenuhnya yang memudahkan penyiapan dan pemuatan data untuk analitik. AWS Glue menemukan data Anda dan menyimpan metadata terkait (misalnya, definisi tabel dan skema) di AWS Glue Data Catalog. Data katalog Anda segera dapat dicari, dapat ditanyakan, dan tersedia untuk ETL.

  • AWS Secrets Manager — AWS Secrets Manager memfasilitasi perlindungan dan pengelolaan rahasia terpusat yang diperlukan untuk akses aplikasi atau layanan. Layanan ini menyimpan kredensi database, kunci API, dan rahasia lainnya, dan menghilangkan kebutuhan untuk hardcode informasi sensitif dalam format plaintext. Secrets Manager juga menawarkan rotasi kunci untuk memenuhi kebutuhan keamanan dan kepatuhan. Ini memiliki integrasi bawaan untuk Amazon Redshift, Amazon Relational Database Service (Amazon RDS), dan Amazon DocumentDB. Anda dapat menyimpan dan mengelola rahasia secara terpusat dengan menggunakan konsol Secrets Manager, antarmuka baris perintah (CLI), atau Secrets Manager API dan. SDKs

  • Amazon Athena - Amazon Athena adalah layanan kueri interaktif yang memudahkan untuk menganalisis data yang disimpan di Amazon S3. Athena tanpa server dan terintegrasi dengan AWS Glue, sehingga dapat langsung menanyakan data yang dikatalogkan menggunakan AWS Glue. Athena diskalakan secara elastis untuk memberikan kinerja kueri interaktif.

Epik

TugasDeskripsiKeterampilan yang dibutuhkan

Menganalisis sistem sumber untuk struktur dan atribut data.

Lakukan tugas ini untuk setiap sumber data yang berkontribusi ke danau data Amazon S3.

Insinyur data

Tentukan partisi dan strategi akses.

Strategi ini harus didasarkan pada frekuensi pengambilan data, pemrosesan delta, dan kebutuhan konsumsi. Pastikan bucket S3 tidak terbuka untuk umum dan akses dikendalikan oleh kebijakan berbasis peran layanan tertentu saja. Untuk informasi lebih lanjut, lihat Dokumentasi Amazon S3.

Insinyur data

Buat bucket S3 terpisah untuk setiap tipe sumber data dan bucket S3 terpisah per sumber untuk data yang diproses (Parket).

Buat bucket terpisah untuk setiap sumber, lalu buat struktur folder yang didasarkan pada frekuensi penyerapan data sistem sumber; misalnya,. s3://source-system-name/date/hour Untuk file yang diproses (dikonversi ke format Parket), buat struktur yang serupa; misalnya,s3://source-processed-bucket/date/hour. Untuk informasi selengkapnya tentang membuat bucket S3, lihat dokumentasi Amazon S3.

Insinyur data
TugasDeskripsiKeterampilan yang dibutuhkan

Luncurkan klaster Amazon Redshift dengan grup parameter serta strategi pemeliharaan dan pencadangan yang sesuai.

Gunakan rahasia database Secrets Manager untuk kredensi pengguna admin saat membuat klaster Amazon Redshift. Untuk informasi tentang membuat dan mengukur cluster Amazon Redshift, lihat dokumentasi Amazon Redshift dan whitepaper Sizing Cloud Data Warehouses.

Insinyur data

Buat dan lampirkan peran layanan IAM ke cluster Amazon Redshift.

Peran layanan AWS Identity and Access Management (IAM) memastikan akses ke Secrets Manager dan bucket S3 sumber. Untuk informasi selengkapnya, lihat dokumentasi AWS tentang otorisasi dan penambahan peran.

Insinyur data

Buat skema database.

Ikuti praktik terbaik Amazon Redshift untuk desain tabel. Berdasarkan kasus penggunaan, pilih kunci pengurutan dan distribusi yang sesuai, dan pengkodean kompresi terbaik. Untuk praktik terbaik, lihat dokumentasi AWS.

Insinyur data

Konfigurasikan manajemen beban kerja.

Konfigurasi antrian manajemen beban kerja (WLM), akselerasi kueri pendek (SQA), atau penskalaan konkurensi, tergantung pada kebutuhan Anda. Untuk informasi selengkapnya, lihat Menerapkan manajemen beban kerja di dokumentasi Amazon Redshift.

Insinyur data
TugasDeskripsiKeterampilan yang dibutuhkan

Buat rahasia baru untuk menyimpan kredenal masuk Amazon Redshift di Secrets Manager.

Rahasia ini menyimpan kredensil untuk pengguna admin serta pengguna layanan database individu. Untuk petunjuk, lihat dokumentasi Secrets Manager. Pilih Amazon Redshift Cluster sebagai tipe rahasia. Selain itu, pada halaman rotasi Rahasia, nyalakan rotasi. Ini akan membuat pengguna yang sesuai di cluster Amazon Redshift dan akan memutar rahasia kunci pada interval yang ditentukan.

Insinyur data

Buat kebijakan IAM untuk membatasi akses Secrets Manager.

Batasi akses Secrets Manager hanya ke administrator Amazon Redshift dan AWS Glue.

Insinyur data
TugasDeskripsiKeterampilan yang dibutuhkan

Di AWS Glue Data Catalog, tambahkan koneksi untuk Amazon Redshift.

Untuk petunjuk, lihat dokumentasi AWS Glue.

Insinyur data

Buat dan lampirkan peran layanan IAM untuk AWS Glue untuk mengakses Secrets Manager, Amazon Redshift, dan bucket S3.

Untuk informasi selengkapnya, lihat dokumentasi AWS Glue.

Insinyur data

Tentukan AWS Glue Data Catalog untuk sumbernya.

Langkah ini melibatkan pembuatan database dan tabel yang diperlukan di AWS Glue Data Catalog. Anda dapat menggunakan crawler untuk membuat katalog tabel di database AWS Glue, atau mendefinisikannya sebagai tabel eksternal Amazon Athena. Anda juga dapat mengakses tabel eksternal yang ditentukan di Athena melalui AWS Glue Data Catalog. Lihat dokumentasi AWS untuk informasi selengkapnya tentang mendefinisikan Katalog Data dan membuat tabel eksternal di Athena.

Insinyur data

Buat pekerjaan AWS Glue untuk memproses data sumber.

Pekerjaan AWS Glue dapat berupa shell Python atau PySpark untuk menstandarisasi, menghapus duplikasi, dan membersihkan file data sumber. Untuk mengoptimalkan kinerja dan menghindari keharusan menanyakan seluruh bucket sumber S3, partisi bucket S3 berdasarkan tanggal, dipecah berdasarkan tahun, bulan, hari, dan jam sebagai predikat pushdown untuk pekerjaan AWS Glue. Untuk informasi selengkapnya, lihat dokumentasi AWS Glue. Muat data yang diproses dan diubah ke partisi bucket S3 yang diproses dalam format Parket. Anda dapat menanyakan file Parket dari Athena.

Insinyur data

Buat pekerjaan AWS Glue untuk memuat data ke Amazon Redshift.

Pekerjaan AWS Glue dapat berupa shell Python atau PySpark memuat data dengan meningkatkan data, diikuti dengan penyegaran lengkap. Untuk detailnya, lihat dokumentasi AWS Glue dan bagian Informasi tambahan.

Insinyur data

(Opsional) Jadwalkan pekerjaan AWS Glue dengan menggunakan pemicu seperlunya.

Pemuatan data tambahan terutama didorong oleh peristiwa Amazon S3 yang menyebabkan fungsi AWS Lambda memanggil pekerjaan AWS Glue. Gunakan penjadwalan berbasis pemicu AWS Glue untuk setiap pemuatan data yang menuntut berbasis waktu, bukan penjadwalan berbasis peristiwa.

Insinyur data
TugasDeskripsiKeterampilan yang dibutuhkan

Buat dan lampirkan peran terkait layanan IAM untuk AWS Lambda untuk mengakses bucket S3 dan pekerjaan AWS Glue.

Buat peran terkait layanan IAM untuk AWS Lambda dengan kebijakan untuk membaca objek dan bucket Amazon S3, serta kebijakan untuk mengakses AWS Glue API untuk memulai pekerjaan AWS Glue. Untuk informasi lebih lanjut, lihat Pusat Pengetahuan.

Insinyur data

Buat fungsi Lambda untuk menjalankan pekerjaan AWS Glue berdasarkan peristiwa Amazon S3 yang ditentukan.

Fungsi Lambda harus dimulai dengan pembuatan file manifes Amazon S3. Fungsi Lambda harus meneruskan lokasi folder Amazon S3 (misalnya, bucket/year/month/date/hour source_) ke pekerjaan AWS Glue sebagai parameter. Pekerjaan AWS Glue akan menggunakan parameter ini sebagai predikat pushdown untuk mengoptimalkan akses file dan kinerja pemrosesan pekerjaan. Untuk informasi selengkapnya, lihat dokumentasi AWS Glue.

Insinyur data

Buat event objek PUT Amazon S3 untuk mendeteksi pembuatan objek, dan panggil fungsi Lambda masing-masing.

Peristiwa objek PUT Amazon S3 harus dimulai hanya dengan pembuatan file manifes. File manifes mengontrol fungsi Lambda dan konkurensi pekerjaan AWS Glue, dan memproses beban sebagai batch alih-alih memproses file individual yang tiba di partisi spesifik bucket sumber S3. Untuk informasi selengkapnya, lihat dokumentasi Lambda.

Insinyur data

Sumber daya terkait

Informasi tambahan

Pendekatan terperinci untuk upsert dan refresh lengkap

Upsert: Ini untuk kumpulan data yang memerlukan agregasi historis, tergantung pada kasus penggunaan bisnis. Ikuti salah satu pendekatan yang dijelaskan dalam Memperbarui dan menyisipkan data baru (dokumentasi Amazon Redshift) berdasarkan kebutuhan bisnis Anda.

Penyegaran lengkap: Ini untuk kumpulan data kecil yang tidak memerlukan agregasi historis. Ikuti salah satu pendekatan ini:

  1. Memangkas tabel Amazon Redshift.

  2. Muat partisi saat ini dari area pementasan

atau:

  1. Buat tabel sementara dengan data partisi saat ini.

  2. Jatuhkan tabel Amazon Redshift target.

  3. Ganti nama tabel sementara menjadi tabel target.