Giới thiệu
Trong quá trình học chứng chỉ AWS Data Associate và thiết kế một pipeline dữ liệu, bạn sẽ tiếp xúc với các khái niệm về biến đổi dữ liệu như việc chuyển đổi định dạng của tệp hoặc biến đổi dữ liệu thực tế.
Khi nói về định dạng tệp, việc chuyển đổi thường nhằm cải thiện tốc độ truy vấn. Các định dạng tệp được hỗ trợ theo cột thường được ưa chuộng, với các ví dụ phổ biến như Parquet và ORC (Optimized Row Columnar).
Biến đổi dữ liệu thực tế liên quan đến việc thực hiện các thao tác trên các hàng và cột; ví dụ như xóa các hàng trùng lặp.
Thách thức trong việc chuyển đổi định dạng tệp
Một trong những thách thức trong việc biến đổi định dạng tệp trên đám mây là chi phí có thể tăng cao. Đặc biệt khi bạn không thường xuyên làm việc với một tập dữ liệu lớn, việc sử dụng các công cụ chuyển đổi tốn kém có thể không cần thiết.
Công việc ETL của AWS Glue sử dụng Spark để thực hiện biến đổi, với cấu hình tối thiểu là 4 vCPUs, 16 GB bộ nhớ, 94GB đĩa
. Trong quá trình học, điều này có thể trở nên rất tốn kém.
Giải pháp thay thế bằng thư viện
Một lựa chọn khác là sử dụng thư viện để chuyển đổi tệp. Trong trường hợp của tôi, khi lập trình bằng Python, thư viện PyArrow là một lựa chọn tốt. Tôi cũng cần chuyển đổi một tệp CSV, vì vậy tôi đã thêm thư viện Pandas vào dự án của mình.
Giải pháp này hoạt động tốt trên máy cục bộ; nó chuyển đổi CSV sang Parquet. Tuy nhiên, kích thước cài đặt gói quá lớn để thêm vào Lambda trong quá trình kích hoạt. Tôi cũng không muốn đóng gói và triển khai một hình ảnh container lên ECR và yêu cầu Lambda kéo xuống.
Sử dụng AWS Wrangler
Giải pháp tốt nhất mà tôi tìm ra là sử dụng gói AWS Wrangler. Nó đi kèm với Pandas và PyArrow đã được cài đặt sẵn và có thể được đính kèm vào lớp Lambda.
Cách cài đặt AWS Wrangler trên Lambda
- Để cài đặt nó như một lớp Lambda, hãy truy cập kho lưu trữ serverless của AWS.
- Triển khai miễn phí.
- Khi hoàn tất, nó sẽ trở thành có sẵn trong lớp Lambda của bạn.
- Bây giờ bạn có thể viết logic biến đổi của mình bằng Python và chạy nó như một chức năng Lambda. Bạn cũng cần tham chiếu đến lớp Lambda mới được thêm vào.
Định nghĩa các logic ETL khác
- Tạo catalog Glue, cơ sở dữ liệu, crawler, trigger và workflow.
- Tạo một workgroup riêng biệt cho dịch vụ truy vấn Athena dựa trên Presto.
- Thêm tập dữ liệu CSV vào S3.
- Như đã mô tả trước đó, chức năng Lambda của bạn đọc tập dữ liệu trên S3:
- Xóa hàng trùng lặp.
- Chuyển đổi CSV thành Parquet.
- Lưu tệp mới vào một đường dẫn S3.
- Sau đó, nó kích hoạt workflow Glue của bạn.
- Workflow Glue ngay lập tức thực hiện các bước sau:
- Quét tệp Parquet.
- Tạo bảng.
- Sau đó, bạn có thể sử dụng Athena để truy vấn dữ liệu trong S3.
Ví dụ minh họa
Kiến trúc
Tôi đã định nghĩa logic này bằng Terraform để bạn có thể thực hành. Sao chép kho lưu trữ sau, cập nhật cấu hình backend, tên bucket và vùng, sau đó áp dụng cấu hình của bạn.
bash
git clone https://github.com/network-charles/aws-etl-wrangler.git
cd aws-etl-wrangler
terraform init -backend-config=backend.conf
terraform apply --auto-approve
Kết luận
Nếu bạn đang học chứng chỉ AWS Data Associate với các tập dữ liệu nhỏ, khi bạn hiểu cách hoạt động của một công việc ETL, bạn có thể chuyển sang sử dụng AWS Wrangler trong pipeline của mình.
Các thực tiễn tốt nhất
- Sử dụng định dạng tệp cột: Khi làm việc với dữ liệu lớn, hãy luôn chọn định dạng tệp hỗ trợ cột như Parquet hoặc ORC để tối ưu hóa tốc độ truy vấn.
- Giảm thiểu chi phí: Chỉ sử dụng các công cụ tốn kém khi cần thiết. Đối với các tập dữ liệu nhỏ, các giải pháp nhẹ hơn như AWS Wrangler có thể là đủ.
- Tối ưu hóa quy trình: Hãy đảm bảo rằng quy trình ETL của bạn được tối ưu hóa để tiết kiệm thời gian và chi phí.
Câu hỏi thường gặp (FAQ)
AWS Wrangler là gì?
AWS Wrangler là một gói Python được thiết kế để giúp làm việc với dữ liệu trong AWS dễ dàng hơn, đặc biệt là với Pandas và PyArrow.
Có thể sử dụng AWS Glue mà không cần Wrangler không?
Có, nhưng AWS Wrangler giúp giảm thiểu thời gian cài đặt và cấu hình, đồng thời cung cấp nhiều tính năng hữu ích.
Làm thế nào để xử lý dữ liệu lớn trên AWS?
Bạn có thể sử dụng các dịch vụ như AWS Glue, Amazon EMR hoặc Athena để xử lý và truy vấn dữ liệu lớn một cách hiệu quả.