Pengembangan & Pengujian Pipeline ETL untuk AWS Secara Lokal

Node Sumber: 997665

Pengembangan & Pengujian Pipeline ETL untuk AWS Secara Lokal

Biasanya, pengembangan dan pengujian pipeline ETL dilakukan pada lingkungan/cluster nyata yang memakan waktu untuk penyiapan & memerlukan pemeliharaan. Artikel ini berfokus pada pengembangan dan pengujian pipeline ETL secara lokal dengan bantuan Docker & LocalStack. Solusi ini memberikan fleksibilitas untuk menguji di lingkungan lokal tanpa menyiapkan layanan apa pun di cloud.


By Subhash Sreenivasachar, Pimpinan Teknis Insinyur Perangkat Lunak di Epsilon

Pengantar

 
 
AWS memainkan peran penting dalam membantu para insinyur, ilmuwan data untuk fokus membangun solusi dan pemecahan masalah tanpa mengkhawatirkan kebutuhan untuk menyiapkan infrastruktur. Dengan pendekatan Tanpa Server & bayar sesuai penggunaan untuk penetapan harga, AWS memberikan kemudahan dalam membuat layanan dengan cepat.

AWS Glue banyak digunakan oleh Insinyur Data untuk membangun pipeline ETL tanpa server. PySpark menjadi salah satu tumpukan teknologi umum yang digunakan untuk pengembangan. Namun, terlepas dari ketersediaan layanan, ada beberapa tantangan yang perlu ditangani.

Men-debug kode di lingkungan AWS baik untuk skrip ETL (PySpark) atau layanan lainnya merupakan suatu tantangan.

  • Pemantauan berkelanjutan penggunaan layanan AWS adalah kunci untuk menjaga faktor biaya tetap terkendali
  • AWS memang menawarkan Dev Endpoint dengan semua perpustakaan percikan terpasang, tetapi mengingat harganya, itu tidak layak untuk digunakan untuk tim pengembangan besar
  • Aksesibilitas layanan AWS mungkin terbatas untuk pengguna tertentu

Solusi

 
 
Solusi untuk AWS dapat dikembangkan, diuji di lingkungan lokal tanpa mengkhawatirkan aksesibilitas atau faktor biaya. Melalui artikel ini, kami membahas dua masalah –

  1. Men-debug kode PySpark secara lokal tanpa menggunakan titik akhir dev AWS.
  2. Berinteraksi dengan Layanan AWS secara lokal

Kedua masalah dapat diselesaikan dengan menggunakan gambar Docker.

  1. Pertama, kami menghilangkan kebutuhan akan server di lingkungan AWS & sebagai gantinya, gambar buruh pelabuhan yang berjalan di mesin bertindak sebagai lingkungan untuk mengeksekusi kode.

AWS menyediakan gambar kotak pasir yang dapat digunakan untuk skrip PySpark. Gambar Docker dapat diatur untuk menjalankan Kode PySpark. https://aws.amazon.com/blogs/big-data/developing-aws-glue-etl-jobs-locally-using-a-container/
 

  1. Dengan mesin buruh pelabuhan yang tersedia untuk mengeksekusi kode, ada kebutuhan untuk layanan seperti S3 untuk menyimpan (membaca/menulis) file sambil membangun pipa ETL.

Interaksi dengan S3 dapat diganti dengan Tumpukan Lokal yang menyediakan kerangka kerja pengujian/ejekan yang mudah digunakan untuk mengembangkan aplikasi Cloud. Ini memutar lingkungan pengujian di mesin lokal Anda yang menyediakan fungsionalitas dan API yang sama dengan lingkungan cloud AWS yang sebenarnya.

Header

Sejauh ini, artikel tersebut berkaitan dengan membangun saluran ETL dan penggunaan layanan yang tersedia. Namun, pendekatan serupa dapat disesuaikan dengan kasus penggunaan apa pun saat bekerja dengan layanan AWS seperti SNS, SQS, CloudFormation, fungsi Lambda, dll.

Pendekatan

  • Gunakan wadah buruh pelabuhan sebagai penerjemah jarak jauh
  • Jalankan sesi PySpark di wadah
  • Jalankan layanan S3 secara lokal menggunakan LocalStack
  • Gunakan kode PySpark untuk membaca dan menulis dari ember S3 yang berjalan di LocalStack

Pra-syarat

 
Alat berikut harus diinstal pada mesin Anda:

  • Buruh pelabuhan
  • Kode PyCharm Professional/ VisualStudio

Pengaturan

  • Unduh atau tarik gambar buruh pelabuhan (tarik buruh pelabuhan )
    • libs:lem_libs_1.0.0_image_01
    • tumpukan lokal/localstack
  • Wadah Docker dapat digunakan sebagai penerjemah jarak jauh dalam versi profesional PyCharm.

Organisasi

 
Dengan Docker diinstal dan gambar ditarik ke mesin lokal Anda, mulai atur PyCharm dengan konfigurasi untuk memulai wadah.

  • Buat file docker-compose.yml

https://gist.github.com/subhash-sreenivasachar/526221a4ede6053b1d576e666db8ec87#file-docker-compose-yml

  • Buat File Docker

https://gist.github.com/subhash-sreenivasachar/526221a4ede6053b1d576e666db8ec87#file-dockerfile

  • Gunakan file persyaratan dengan paket yang akan diinstal

https://gist.github.com/subhash-sreenivasachar/526221a4ede6053b1d576e666db8ec87#file-requirements-txt
 

  • Siapkan penerjemah jarak jauh Python
    • Siapkan juru bahasa Python menggunakan file docker-compose.
    • Pilih `glue-service` di pengaturan PyCharm Docker Compose.
    • File komposisi Docker membuat dan menjalankan wadah untuk kedua gambar
    • LocalStack secara default berjalan pada port 4566 dan layanan S3 diaktifkan di dalamnya

Kode

  • Perpustakaan yang diperlukan untuk diimpor

https://gist.github.com/subhash-sreenivasachar/526221a4ede6053b1d576e666db8ec87#file-imports

  • Tambahkan file ke ember S3 yang berjalan di LocalStack

https://gist.github.com/subhash-sreenivasachar/526221a4ede6053b1d576e666db8ec87#file-add_to_bucket
http://host.docker.internal:4566 apakah S3 berjalan secara lokal di dalam wadah buruh pelabuhan

  • Atur sesi PySpark untuk membaca dari S3

https://gist.github.com/subhash-sreenivasachar/526221a4ede6053b1d576e666db8ec87#file-create_pyspark_session

  • Sesi PySpark terhubung ke S3 melalui kredensial tiruan yang disediakan
  • Anda dapat membaca dari S3 langsung menggunakan sesi PySpark yang dibuat

https://gist.github.com/subhash-sreenivasachar/526221a4ede6053b1d576e666db8ec87#file-read_from_s3

  • Akhirnya, dimungkinkan untuk menulis ke S3 dalam format pilihan apa pun

https://gist.github.com/subhash-sreenivasachar/526221a4ede6053b1d576e666db8ec87#file-write_to_s3

Setelah langkah-langkah yang disebutkan di atas telah diikuti, kita dapat membuat file csv dummy dengan data tiruan untuk pengujian dan Anda harus melakukannya dengan baik.

  • Tambahkan file ke S3 (yang berjalan di LocalStack)
  • Baca dari S3
  • Tulis kembali ke S3 sebagai parket

Anda harus dapat menjalankan file .py untuk mengeksekusi & sesi PySpark akan dibuat yang dapat membaca dari ember S3 yang berjalan secara lokal menggunakan API LocalStack.

Selain itu, Anda juga dapat memeriksa apakah LocalStack berjalan dengan http://localhost:4566/health

LocalStack memberi Anda kemampuan untuk menjalankan perintah menggunakan AWS CLI juga.

Kesimpulan

 
 
Penggunaan Docker & Localstack menyediakan cara cepat dan mudah untuk menjalankan kode Pyspark, melakukan debug pada wadah dan menulis ke S3 yang berjalan secara lokal. Semua ini tanpa harus terhubung ke layanan AWS apa pun.

 
Referensi:

 
Bio: Subhash Sreenivasachar adalah Lead Software Engineer di tim Epsilon Digital Experience, membangun solusi teknik untuk memecahkan masalah ilmu data khususnya personalisasi, dan membantu mendorong ROI untuk klien.

Terkait:

Sumber: https://www.kdnuggets.com/2021/08/development-testing-etl-pipelines-aws-locally.html

Stempel Waktu:

Lebih dari KDnugget