การพัฒนาและทดสอบท่อส่ง ETL สำหรับ AWS Locally
โดยทั่วไป การพัฒนาและทดสอบไปป์ไลน์ ETL จะดำเนินการในสภาพแวดล้อม/คลัสเตอร์จริง ซึ่งใช้เวลานานในการตั้งค่าและต้องมีการบำรุงรักษา บทความนี้เน้นที่การพัฒนาและทดสอบไปป์ไลน์ ETL ในพื้นที่ด้วยความช่วยเหลือของ Docker & LocalStack โซลูชันนี้ให้ความยืดหยุ่นในการทดสอบในสภาพแวดล้อมภายในเครื่องโดยไม่ต้องตั้งค่าบริการใดๆ บนคลาวด์
By สุภาษ ศรีนิวาสาจาร, Software Engineer Technical Lead ที่ Epsilon
บทนำ
AWS มีบทบาทสำคัญในการช่วยให้วิศวกร นักวิทยาศาสตร์ข้อมูลมุ่งเน้นไปที่การสร้างโซลูชันและการแก้ปัญหาโดยไม่ต้องกังวลเกี่ยวกับความจำเป็นในการตั้งค่าโครงสร้างพื้นฐาน ด้วยวิธีการกำหนดราคาแบบไร้เซิร์ฟเวอร์และจ่ายตามการใช้งาน AWS ให้ความสะดวกในการสร้างบริการได้ทันที
วิศวกรข้อมูลใช้ AWS Glue อย่างแพร่หลายเพื่อสร้างไปป์ไลน์ ETL แบบไร้เซิร์ฟเวอร์ PySpark เป็นหนึ่งใน tech-stack ทั่วไปที่ใช้สำหรับการพัฒนา อย่างไรก็ตาม แม้จะมีความพร้อมให้บริการ แต่ก็มีความท้าทายบางอย่างที่ต้องแก้ไข
การดีบักโค้ดในสภาพแวดล้อมของ AWS ไม่ว่าจะเป็นสคริปต์ ETL (PySpark) หรือบริการอื่นๆ ถือเป็นเรื่องท้าทาย
- การตรวจสอบการใช้บริการ AWS อย่างต่อเนื่องเป็นกุญแจสำคัญในการควบคุมปัจจัยด้านต้นทุน
- AWS เสนอ Dev Endpoint พร้อมติดตั้งไลบรารี spark ทั้งหมด แต่เมื่อพิจารณาจากราคาแล้ว จึงไม่สามารถใช้งานได้สำหรับทีมพัฒนาขนาดใหญ่
- การเข้าถึงบริการของ AWS อาจ จำกัด สำหรับผู้ใช้บางคน
Solution
โซลูชันสำหรับ AWS สามารถพัฒนา ทดสอบในสภาพแวดล้อมในพื้นที่โดยไม่ต้องกังวลเกี่ยวกับความสามารถในการเข้าถึงหรือปัจจัยด้านต้นทุน จากบทความนี้ เรากำลังแก้ไขปัญหาสองประการ –
- การดีบักโค้ด PySpark ในเครื่องโดยไม่ต้องใช้ตำแหน่งข้อมูล AWS dev
- การโต้ตอบกับบริการของ AWS ในพื้นที่
ปัญหาทั้งสองสามารถแก้ไขได้ด้วยการใช้อิมเมจ Docker
- อันดับแรก เราไม่ต้องการเซิร์ฟเวอร์บนสภาพแวดล้อมของ AWS & แทนที่อิมเมจนักเทียบท่าที่ทำงานบนเครื่องจะทำหน้าที่เป็นสภาพแวดล้อมในการรันโค้ด
AWS จัดเตรียมอิมเมจแซนด์บ็อกซ์ซึ่งสามารถใช้สำหรับสคริปต์ PySpark สามารถตั้งค่าอิมเมจ Docker เพื่อรัน PySpark Code ได้ https://aws.amazon.com/blogs/big-data/developing-aws-glue-etl-jobs-locally-using-a-container/
- ด้วยเครื่องเทียบท่าที่พร้อมสำหรับรันโค้ด คุณจำเป็นต้องใช้บริการเช่น S3 เพื่อจัดเก็บไฟล์ (อ่าน/เขียน) ขณะสร้างไปป์ไลน์ ETL
การโต้ตอบกับ S3 สามารถแทนที่ด้วย localstack ซึ่งมีกรอบการทดสอบ/จำลองที่ใช้งานง่ายสำหรับการพัฒนาแอปพลิเคชันระบบคลาวด์ มันสร้างสภาพแวดล้อมการทดสอบบนเครื่องของคุณซึ่งมีฟังก์ชันการทำงานและ API เดียวกันกับสภาพแวดล้อม AWS Cloud จริง
จนถึงตอนนี้ บทความเกี่ยวกับการสร้างไปป์ไลน์ ETL และการใช้บริการที่มีอยู่ อย่างไรก็ตาม แนวทางที่คล้ายกันนี้สามารถปรับให้เข้ากับกรณีการใช้งานใดๆ ในขณะที่ทำงานกับบริการของ AWS เช่น SNS, SQS, CloudFormation, ฟังก์ชัน Lambda เป็นต้น
เข้าใกล้
- ใช้คอนเทนเนอร์นักเทียบท่าเป็นล่ามระยะไกล
- เรียกใช้เซสชัน PySpark บนคอนเทนเนอร์
- หมุนบริการ S3 ในเครื่องโดยใช้ LocalStack
- ใช้รหัส PySpark เพื่ออ่านและเขียนจากบัคเก็ต S3 ที่ทำงานบน LocalStack
requisites ก่อน
ต้องติดตั้งเครื่องมือต่อไปนี้ในเครื่องของคุณ
- นักเทียบท่า
- รหัส PyCharm Professional / VisualStudio
การติดตั้ง
- ดาวน์โหลดหรือดึงภาพนักเทียบท่า (docker pull )
- libs:glue_libs_1.0.0_image_01
- localstack/โลคัลสแต็ก
- คอนเทนเนอร์นักเทียบท่าสามารถใช้เป็นล่ามระยะไกลในเวอร์ชันมืออาชีพของ PyCharm
การดำเนินงาน
เมื่อติดตั้ง Docker และดึงอิมเมจไปยังเครื่องในพื้นที่ของคุณ ให้เริ่มตั้งค่า PyCharm ด้วยการกำหนดค่าเพื่อเริ่มคอนเทนเนอร์
- สร้างไฟล์ docker-compose.yml
- สร้าง DockerFile
https://gist.github.com/subhash-sreenivasachar/526221a4ede6053b1d576e666db8ec87#file-dockerfile
- ใช้ไฟล์ข้อกำหนดพร้อมแพ็คเกจที่จะติดตั้ง
- ตั้งค่าตัวแปลระยะไกล Python
- ตั้งค่าตัวแปล Python โดยใช้ไฟล์ docker-compose
- เลือก 'บริการกาว' ในการตั้งค่า PyCharm Docker Compose
- ไฟล์ Docker-compose สร้างและรันคอนเทนเนอร์สำหรับทั้งสองอิมเมจ
- LocalStack โดยค่าเริ่มต้นจะทำงานบนพอร์ต 4566 และเปิดใช้งานบริการ S3 บนนั้น
รหัส
- ห้องสมุดที่จำเป็นในการนำเข้า
https://gist.github.com/subhash-sreenivasachar/526221a4ede6053b1d576e666db8ec87#file-imports
- เพิ่มไฟล์ไปยังบัคเก็ต S3 ที่ทำงานบน LocalStack
https://gist.github.com/subhash-sreenivasachar/526221a4ede6053b1d576e666db8ec87#file-add_to_bucket
http://host.docker.internal:4566 คือ S3 ที่ทำงานอยู่ภายในคอนเทนเนอร์นักเทียบท่า
- ตั้งค่าเซสชัน PySpark เพื่ออ่านจาก S3
- เซสชัน PySpark เชื่อมต่อกับ S3 ผ่านข้อมูลรับรองจำลองที่ให้ไว้
- คุณสามารถอ่านจาก S3 ได้โดยตรงโดยใช้เซสชัน PySpark ที่สร้างขึ้น
https://gist.github.com/subhash-sreenivasachar/526221a4ede6053b1d576e666db8ec87#file-read_from_s3
- ในที่สุด ก็สามารถเขียนไปยัง S3 ในรูปแบบใดก็ได้ที่ต้องการ
https://gist.github.com/subhash-sreenivasachar/526221a4ede6053b1d576e666db8ec87#file-write_to_s3
เมื่อทำตามขั้นตอนข้างต้นแล้ว เราสามารถสร้างไฟล์ csv จำลองที่มีข้อมูลจำลองสำหรับการทดสอบได้ และคุณควรจะทำได้
- เพิ่มไฟล์ลงใน S3 (ซึ่งทำงานบน LocalStack)
- อ่านจาก S3
- เขียนกลับไปที่ S3 เป็นไม้ปาร์เก้
คุณควรจะสามารถเรียกใช้ไฟล์ .py เพื่อดำเนินการได้ & เซสชัน PySpark จะถูกสร้างขึ้นซึ่งสามารถอ่านจากบัคเก็ต S3 ซึ่งทำงานอยู่ในเครื่องโดยใช้ LocalStack API
นอกจากนี้ คุณยังสามารถตรวจสอบว่า LocalStack ทำงานด้วยหรือไม่ http://localhost:4566/health
LocalStack ให้คุณสามารถเรียกใช้คำสั่งโดยใช้ AWS CLI ได้เช่นกัน
สรุป
การใช้ Docker & Localstack เป็นวิธีที่ง่ายและรวดเร็วในการรันโค้ด Pyspark ดีบักคอนเทนเนอร์ และเขียนไปยัง S3 ซึ่งทำงานอยู่ในเครื่อง ทั้งหมดนี้โดยไม่ต้องเชื่อมต่อกับบริการของ AWS
อ้างอิง:
- กาวปลายทาง: https://docs.aws.amazon.com/glue/latest/dg/dev-endpoint.html
เทียบท่า: https://docs.docker.com/get-docker/ - พีชาร์ม: https://www.jetbrains.com/pycharm/
- ล่ามระยะไกล PyCharm: https://www.jetbrains.com/help/pycharm/using-docker-compose-as-a-remote-interpreter.html
- สแต็คภายในเครื่อง: https://localstack.cloud
Bio: สุภาษ ศรีนิวาสาจาร เป็นหัวหน้าวิศวกรซอฟต์แวร์ที่ทีม Epsilon Digital Experience สร้างโซลูชันทางวิศวกรรมเพื่อแก้ปัญหาด้านวิทยาศาสตร์ข้อมูลโดยเฉพาะอย่างยิ่งส่วนบุคคล และช่วยผลักดัน ROI ให้กับลูกค้า
ที่เกี่ยวข้อง
ที่มา: https://www.kdnuggets.com/2021/08/development-testing-etl-pipelines-aws-locally.html
- "
- &
- การเข้าถึง
- ทั้งหมด
- อเมซอน
- การวิเคราะห์
- API
- APIs
- การใช้งาน
- บทความ
- ความพร้อมใช้งาน
- AWS
- สร้าง
- การก่อสร้าง
- ท้าทาย
- ลูกค้า
- เมฆ
- โปรแกรมคลาวด์
- รหัส
- ร่วมกัน
- ภาชนะบรรจุ
- การสร้าง
- หนังสือรับรอง
- ข้อมูล
- วิเคราะห์ข้อมูล
- วิทยาศาสตร์ข้อมูล
- คลังข้อมูล
- ข้อเสนอ
- การเรียนรู้ลึก ๆ
- dev
- พัฒนาการ
- ดิจิตอล
- ผู้อำนวยการ
- นักเทียบท่า
- ปลายทาง
- วิศวกร
- ชั้นเยี่ยม
- วิศวกร
- สิ่งแวดล้อม
- ฯลฯ
- ความยืดหยุ่น
- โฟกัส
- รูป
- กรอบ
- GitHub
- ดี
- GPUs
- โปรดคลิกที่นี่เพื่ออ่านรายละเอียดเพิ่มเติม
- สรุป ความน่าเชื่อถือของ Olymp Trade?
- HTTPS
- ภาพ
- โครงสร้างพื้นฐาน
- IT
- คีย์
- ใหญ่
- นำ
- เรียนรู้
- การเรียนรู้
- ในประเทศ
- ในท้องถิ่น
- ML
- การตรวจสอบ
- เสนอ
- ออนไลน์
- อื่นๆ
- ส่วนบุคคล
- เป็นจุดสำคัญ
- ราคา
- การตั้งราคา
- การแก้ปัญหา
- หลาม
- ความต้องการ
- วิ่ง
- วิ่ง
- Sandbox
- วิทยาศาสตร์
- นักวิทยาศาสตร์
- serverless
- บริการ
- การตั้งค่า
- ซอฟต์แวร์
- วิศวกรซอฟต์แวร์
- โซลูชัน
- แก้
- เริ่มต้น
- จัดเก็บ
- จำนวนชั้น
- วิชาการ
- ทดสอบ
- การทดสอบ
- เวลา
- ด้านบน
- ผู้ใช้
- คลังสินค้า
- X
- ปี