Quay lại bộ đề
Question #162 Topic 1
You want to schedule a number of sequential load and transformation jobs. Data files will be added to a Cloud Storage bucket by an upstream process. There is no fixed schedule for when the new data arrives. Next, a Dataproc job is triggered to perform some transformations and write the data to BigQuery. You then need to run additional transformation jobs in BigQuery. The transformation jobs are different for every table. These jobs might take hours to complete. You need to determine the most efficient and maintainable workflow to process hundreds of tables and provide the freshest data to your end users. What should you do?
Bạn muốn lập lịch cho một số công việc tải và biến đổi dữ liệu tuần tự. Các tệp dữ liệu sẽ được thêm vào một bucket Cloud Storage bằng một quy trình ở thượng nguồn (upstream process). Không có lịch trình cố định cho thời điểm dữ liệu mới đến. Tiếp theo, một job Dataproc được kích hoạt để thực hiện một số biến đổi và ghi dữ liệu vào BigQuery. Sau đó, bạn cần chạy thêm các job biến đổi bổ sung trong BigQuery. Các job biến đổi này khác nhau đối với mỗi bảng. Các job này có thể mất hàng giờ để hoàn thành. Bạn cần xác định quy trình công việc hiệu quả và dễ bảo trì nhất để xử lý hàng trăm bảng và cung cấp dữ liệu mới nhất cho người dùng cuối của bạn. Bạn nên làm gì?
A
1. Create an Apache Airflow directed acyclic graph (DAG) in Cloud Composer with sequential tasks by using the Cloud Storage, Dataproc, and BigQuery operators.2. Use a single shared DAG for all tables that need to go through the pipeline.3. Schedule the DAG to run hourly.
1. Tạo một đồ thị tuần trình có hướng (DAG) Apache Airflow trong Cloud Composer với các tác vụ tuần tự bằng cách sử dụng các toán tử Cloud Storage, Dataproc và BigQuery.
2. Sử dụng một DAG chung duy nhất cho tất cả các bảng cần đi qua pipeline.
3. Lập lịch chạy DAG này hàng giờ.
B
1. Create an Apache Airflow directed acyclic graph (DAG) in Cloud Composer with sequential tasks by using the Cloud Storage, Dataproc, and BigQuery operators.2. Create a separate DAG for each table that needs to go through the pipeline.3. Schedule the DAGs to run hourly.
1. Tạo một đồ thị tuần trình có hướng (DAG) Apache Airflow trong Cloud Composer với các tác vụ tuần tự bằng cách sử dụng các toán tử Cloud Storage, Dataproc và BigQuery.
2. Tạo một DAG riêng biệt cho mỗi bảng cần đi qua pipeline.
3. Lập lịch chạy các DAG này hàng giờ.
C
1. Create an Apache Airflow directed acyclic graph (DAG) in Cloud Composer with sequential tasks by using the Dataproc and BigQuery operators.2. Use a single shared DAG for all tables that need to go through the pipeline.3. Use a Cloud Storage object trigger to launch a Cloud Function that triggers the DAG.
1. Tạo một đồ thị tuần trình có hướng (DAG) Apache Airflow trong Cloud Composer với các tác vụ tuần tự bằng cách sử dụng các toán tử Dataproc và BigQuery.
2. Sử dụng một DAG chung duy nhất cho tất cả các bảng cần đi qua pipeline.
3. Sử dụng trigger đối tượng Cloud Storage để khởi chạy một Cloud Function kích hoạt DAG.
D
1. Create an Apache Airflow directed acyclic graph (DAG) in Cloud Composer with sequential tasks by using the Dataproc and BigQuery operators.2. Create a separate DAG for each table that needs to go through the pipeline.3. Use a Cloud Storage object trigger to launch a Cloud Function that triggers the DAG.
1. Tạo một đồ thị tuần trình có hướng (DAG) Apache Airflow trong Cloud Composer với các tác vụ tuần tự bằng cách sử dụng các toán tử Dataproc và BigQuery.
2. Tạo một DAG riêng biệt cho mỗi bảng cần đi qua pipeline.
3. Sử dụng trigger đối tượng Cloud Storage để khởi chạy một Cloud Function kích hoạt DAG.
Giải thích & Tài liệu tham khảo
Để xử lý luồng công việc này một cách hiệu quả và dễ bảo trì:
- Kích hoạt dựa trên sự kiện (Event-driven trigger): Do 'không có lịch trình cố định cho thời điểm dữ liệu mới đến', việc lập lịch chạy hàng giờ (ở phương án A và B) sẽ không tối ưu. Nếu dữ liệu đến muộn, pipeline sẽ lãng phí tài nguyên chạy vô ích hoặc dữ liệu không được cập nhật kịp thời. Do đó, việc sử dụng trigger Cloud Storage khi có file mới tải lên để gọi Cloud Function và kích hoạt DAG là giải pháp tối ưu nhất để cung cấp dữ liệu mới nhất (freshest data).
- DAG riêng biệt cho mỗi bảng (Separate DAG for each table): Câu hỏi nêu rõ 'các job biến đổi này khác nhau đối với mỗi bảng' và 'có thể mất hàng giờ để hoàn thành'. Nếu sử dụng một DAG chung duy nhất cho hàng trăm bảng (phương án A và C), sự chậm trễ hoặc lỗi ở một bảng đơn lẻ sẽ làm nghẽn toàn bộ pipeline, gây ảnh hưởng đến việc cập nhật của tất cả các bảng khác. Việc chia nhỏ thành các DAG riêng biệt giúp cô lập lỗi, dễ dàng theo dõi, chạy lại (retry) riêng lẻ cho từng bảng mà không ảnh hưởng tới bảng khác.
- Các toán tử trong DAG: Vì Cloud Function được kích hoạt bởi sự kiện file đến trong Cloud Storage, bản thân DAG chỉ cần thực hiện từ bước chạy job Dataproc và biến đổi trên BigQuery. Do đó chỉ cần các toán tử Dataproc và BigQuery.
(Đáp án được gợi ý bởi AI)