Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Hasilkan data pengujian menggunakan pekerjaan AWS Glue dan Python
Moinul Al-Mamun, Amazon Web Services
Ringkasan
Pola ini menunjukkan kepada Anda cara cepat dan mudah menghasilkan jutaan file sampel secara bersamaan dengan membuat pekerjaan AWS Glue yang ditulis dengan Python. File sampel disimpan dalam bucket Amazon Simple Storage Service (Amazon S3) Simple Storage Service (Amazon S3). Kemampuan untuk menghasilkan sejumlah besar file sampel dengan cepat penting untuk menguji atau mengevaluasi layanan di AWS Cloud. Misalnya, Anda dapat menguji kinerja DataBrew pekerjaan AWS Glue Studio atau AWS Glue dengan melakukan analisis data pada jutaan file kecil dalam awalan Amazon S3.
Meskipun Anda dapat menggunakan layanan AWS lainnya untuk menghasilkan kumpulan data sampel, kami menyarankan Anda menggunakan AWS Glue. Anda tidak perlu mengelola infrastruktur apa pun karena AWS Glue adalah layanan pemrosesan data tanpa server. Anda bisa membawa kode Anda dan menjalankannya di klaster AWS Glue. Selain itu, AWS Glue menyediakan, mengonfigurasi, dan menskalakan sumber daya yang diperlukan untuk menjalankan pekerjaan Anda. Anda hanya membayar untuk sumber daya yang digunakan pekerjaan Anda saat menjalankan.
Prasyarat dan batasan
Prasyarat
Versi produk
Python 3.9
AWS CLI versi 2
Batasan
Jumlah maksimum pekerjaan AWS Glue per pemicu adalah 50. Untuk informasi selengkapnya, lihat titik akhir dan kuota AWS Glue.
Arsitektur
Diagram berikut menggambarkan contoh arsitektur yang berpusat di sekitar pekerjaan AWS Glue yang menulis outputnya (yaitu, file sampel) ke bucket S3.

Diagram mencakup alur kerja berikut:
Anda menggunakan AWS CLI, AWS Management Console, atau API untuk memulai pekerjaan AWS Glue. AWS CLI atau API memungkinkan Anda mengotomatiskan paralelisasi pekerjaan yang dipanggil dan mengurangi runtime untuk menghasilkan file sampel.
Pekerjaan AWS Glue menghasilkan konten file secara acak, mengonversi konten menjadi format CSV, dan kemudian menyimpan konten sebagai objek Amazon S3 di bawah awalan umum. Setiap file kurang dari satu kilobyte. Pekerjaan AWS Glue menerima dua parameter pekerjaan yang ditentukan pengguna: dan.
START_RANGEEND_RANGEAnda dapat menggunakan parameter ini untuk mengatur nama file dan jumlah file yang dihasilkan di Amazon S3 oleh setiap pekerjaan yang dijalankan. Anda dapat menjalankan beberapa instance pekerjaan ini secara paralel (misalnya, 100 instance).
Alat
Amazon Simple Storage Service (Amazon S3) adalah layanan penyimpanan objek berbasis cloud yang membantu Anda menyimpan, melindungi, dan mengambil sejumlah data.
AWS Command Line Interface (AWS CLI) adalah alat sumber terbuka yang membantu Anda berinteraksi dengan layanan AWS melalui perintah di shell baris perintah Anda.
AWS Glue adalah layanan ekstrak, transformasi, dan beban (ETL) yang dikelola sepenuhnya. Ini membantu Anda mengkategorikan, membersihkan, memperkaya, dan memindahkan data dengan andal antara penyimpanan data dan aliran data.
AWS Identity and Access Management (IAM) membantu Anda mengelola akses ke sumber daya AWS dengan aman dengan mengontrol siapa yang diautentikasi dan diberi wewenang untuk menggunakannya.
Praktik terbaik
Pertimbangkan praktik terbaik AWS Glue berikut saat Anda menerapkan pola ini:
Gunakan jenis pekerja AWS Glue yang tepat untuk mengurangi biaya. Kami menyarankan Anda memahami properti yang berbeda dari jenis pekerja, dan kemudian memilih jenis pekerja yang tepat untuk beban kerja Anda berdasarkan persyaratan CPU dan memori. Untuk pola ini, kami menyarankan Anda menggunakan pekerjaan shell Python sebagai jenis pekerjaan Anda untuk meminimalkan DPU dan mengurangi biaya. Untuk informasi selengkapnya, lihat Menambahkan lowongan di AWS Glue di Panduan Pengembang AWS Glue.
Gunakan batas konkurensi yang tepat untuk skala pekerjaan Anda. Kami menyarankan Anda mendasarkan konkurensi maksimum pekerjaan AWS Glue Anda pada kebutuhan waktu Anda dan jumlah file yang diperlukan.
Mulailah membuat sejumlah kecil file pada awalnya. Untuk mengurangi biaya dan menghemat waktu saat Anda membangun pekerjaan AWS Glue, mulailah dengan sejumlah kecil file (seperti 1.000). Ini dapat membuat pemecahan masalah lebih mudah. Jika menghasilkan sejumlah kecil file berhasil, maka Anda dapat menskalakan ke jumlah file yang lebih besar.
Jalankan secara lokal terlebih dahulu. Untuk mengurangi biaya dan menghemat waktu saat Anda membangun pekerjaan AWS Glue, mulailah pengembangan secara lokal dan uji kode Anda. Untuk petunjuk tentang menyiapkan wadah Docker yang dapat membantu Anda menulis pekerjaan AWS Glue extract, transform, and load (ETL) baik di shell maupun di lingkungan pengembangan terintegrasi (IDE), lihat pekerjaan Mengembangkan AWS Glue ETL secara lokal menggunakan postingan kontainer
di AWS Big Data Blog.
Untuk praktik terbaik AWS Glue lainnya, lihat Praktik terbaik dalam dokumentasi AWS Glue.
Epik
| Tugas | Deskripsi | Keterampilan yang dibutuhkan |
|---|---|---|
Buat bucket S3 untuk menyimpan file. | Buat bucket S3 dan awalan di dalamnya. catatanPola ini menggunakan | Pengembang aplikasi |
Buat dan konfigurasikan peran IAM. | Anda harus membuat peran IAM yang dapat digunakan oleh pekerjaan AWS Glue Anda untuk menulis ke bucket S3 Anda.
| Pengembang aplikasi |
| Tugas | Deskripsi | Keterampilan yang dibutuhkan |
|---|---|---|
Buat pekerjaan AWS Glue. | Anda harus membuat pekerjaan AWS Glue yang menghasilkan konten Anda dan menyimpannya di bucket S3. Buat pekerjaan AWS Glue, lalu konfigurasikan pekerjaan Anda dengan menyelesaikan langkah-langkah berikut:
| Pengembang aplikasi |
Perbarui kode pekerjaan. |
| Pengembang aplikasi |
| Tugas | Deskripsi | Keterampilan yang dibutuhkan |
|---|---|---|
Jalankan pekerjaan AWS Glue dari baris perintah. | Untuk menjalankan tugas AWS Glue Anda dari AWS CLI, jalankan perintah berikut menggunakan nilai Anda:
catatanUntuk petunjuk tentang menjalankan tugas AWS Glue dari AWS Management Console, lihat tugas Jalankan AWS Glue di cerita AWS Management Console dalam pola ini. TipSebaiknya gunakan AWS CLI untuk menjalankan pekerjaan AWS Glue jika Anda ingin menjalankan beberapa eksekusi sekaligus dengan parameter berbeda, seperti yang ditunjukkan pada contoh di atas. Untuk menghasilkan semua perintah AWS CLI yang diperlukan untuk menghasilkan jumlah file yang ditentukan menggunakan faktor paralelisasi tertentu, jalankan kode bash berikut (menggunakan nilai Anda):
Jika Anda menggunakan skrip di atas, pertimbangkan hal berikut:
catatanUntuk melihat contoh output dari skrip di atas, lihat Output skrip Shell di bagian Informasi tambahan dari pola ini. | Pengembang aplikasi |
Jalankan pekerjaan AWS Glue di AWS Management Console. |
| Pengembang aplikasi |
Periksa status pekerjaan AWS Glue Anda. |
| Pengembang aplikasi |
Sumber daya terkait
Referensi
Panduan dan pola
Informasi tambahan
Tes benchmarking
Pola ini digunakan untuk menghasilkan 10 juta file menggunakan parameter paralelisasi yang berbeda sebagai bagian dari uji benchmarking. Tabel berikut menunjukkan output dari tes:
Paralelisasi | Jumlah file yang dihasilkan oleh pekerjaan yang dijalankan | Durasi Job | Kecepatan |
|---|---|---|---|
10 | 1.000.000 | 6 jam, 40 menit | Sangat lambat |
50 | 200.000 | 80 menit | Sedang |
100 | 100.000 | 40 menit | Cepat |
Jika Anda ingin membuat proses lebih cepat, Anda dapat mengonfigurasi lebih banyak proses bersamaan dalam konfigurasi pekerjaan Anda. Anda dapat dengan mudah menyesuaikan konfigurasi pekerjaan berdasarkan kebutuhan Anda, tetapi perlu diingat bahwa ada batas kuota layanan AWS Glue. Untuk informasi selengkapnya, lihat titik akhir dan kuota AWS Glue.
Keluaran skrip shell
Contoh berikut menunjukkan output skrip shell dari pekerjaan Jalankan AWS Glue dari cerita baris perintah dalam pola ini.
user@MUC-1234567890 MINGW64 ~ $ # define parameters NUMBER_OF_FILES=10000000; PARALLELIZATION=50; # initialize _SB=0; # generate commands for i in $(seq 1 $PARALLELIZATION); do echo aws glue start-job-run --job-name create_small_files --arguments "'"'{"--START_RANGE":"'$(((NUMBER_OF_FILES/PARALLELIZATION) (i-1) + SB))'","--ENDRANGE":"'$(((NUMBER_OF_FILES/PARALLELIZATION) (i)))'"}'"'"; _SB=1; done aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"0","--END_RANGE":"200000"}' aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"200001","--END_RANGE":"400000"}' aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"400001","--END_RANGE":"600000"}' aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"600001","--END_RANGE":"800000"}' aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"800001","--END_RANGE":"1000000"}' aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"1000001","--END_RANGE":"1200000"}' aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"1200001","--END_RANGE":"1400000"}' aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"1400001","--END_RANGE":"1600000"}' aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"1600001","--END_RANGE":"1800000"}' aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"1800001","--END_RANGE":"2000000"}' aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"2000001","--END_RANGE":"2200000"}' aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"2200001","--END_RANGE":"2400000"}' aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"2400001","--END_RANGE":"2600000"}' aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"2600001","--END_RANGE":"2800000"}' aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"2800001","--END_RANGE":"3000000"}' aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"3000001","--END_RANGE":"3200000"}' aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"3200001","--END_RANGE":"3400000"}' aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"3400001","--END_RANGE":"3600000"}' aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"3600001","--END_RANGE":"3800000"}' aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"3800001","--END_RANGE":"4000000"}' aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"4000001","--END_RANGE":"4200000"}' aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"4200001","--END_RANGE":"4400000"}' aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"4400001","--END_RANGE":"4600000"}' aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"4600001","--END_RANGE":"4800000"}' aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"4800001","--END_RANGE":"5000000"}' aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"5000001","--END_RANGE":"5200000"}' aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"5200001","--END_RANGE":"5400000"}' aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"5400001","--END_RANGE":"5600000"}' aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"5600001","--END_RANGE":"5800000"}' aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"5800001","--END_RANGE":"6000000"}' aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"6000001","--END_RANGE":"6200000"}' aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"6200001","--END_RANGE":"6400000"}' aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"6400001","--END_RANGE":"6600000"}' aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"6600001","--END_RANGE":"6800000"}' aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"6800001","--END_RANGE":"7000000"}' aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"7000001","--END_RANGE":"7200000"}' aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"7200001","--END_RANGE":"7400000"}' aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"7400001","--END_RANGE":"7600000"}' aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"7600001","--END_RANGE":"7800000"}' aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"7800001","--END_RANGE":"8000000"}' aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"8000001","--END_RANGE":"8200000"}' aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"8200001","--END_RANGE":"8400000"}' aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"8400001","--END_RANGE":"8600000"}' aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"8600001","--END_RANGE":"8800000"}' aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"8800001","--END_RANGE":"9000000"}' aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"9000001","--END_RANGE":"9200000"}' aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"9200001","--END_RANGE":"9400000"}' aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"9400001","--END_RANGE":"9600000"}' aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"9600001","--END_RANGE":"9800000"}' aws glue start-job-run --job-name create_small_files --arguments '{"--START_RANGE":"9800001","--END_RANGE":"10000000"}' user@MUC-1234567890 MINGW64 ~
FAQ
Berapa banyak pekerjaan yang berjalan bersamaan atau paralel yang harus saya gunakan?
Jumlah proses bersamaan dan pekerjaan paralel tergantung pada kebutuhan waktu Anda dan jumlah file pengujian yang diinginkan. Kami menyarankan Anda memeriksa ukuran file yang Anda buat. Pertama, periksa berapa lama waktu yang dibutuhkan pekerjaan AWS Glue untuk menghasilkan jumlah file yang Anda inginkan. Kemudian, gunakan jumlah lari bersamaan yang tepat untuk memenuhi tujuan Anda. Misalnya, jika Anda berasumsi bahwa 100.000 file membutuhkan waktu 40 menit untuk menyelesaikan proses tetapi waktu target Anda adalah 30 menit, maka Anda harus meningkatkan pengaturan konkurensi untuk pekerjaan AWS Glue Anda.
Jenis konten apa yang dapat saya buat menggunakan pola ini?
Anda dapat membuat semua jenis konten, seperti file teks dengan pembatas yang berbeda (misalnya, PIPE, JSON, atau CSV). Pola ini menggunakan Boto3 untuk menulis ke file dan kemudian menyimpan file dalam ember S3.
Tingkat izin IAM apa yang saya perlukan di bucket S3?
Anda harus memiliki kebijakan berbasis identitas yang memungkinkan Write akses ke objek di bucket S3 Anda. Untuk informasi selengkapnya, lihat Amazon S3: Mengizinkan akses baca dan tulis ke objek dalam bucket S3 dalam dokumentasi Amazon S3.