Quay lại bộ đề
Question #290 Topic 1
Your team is responsible for developing and maintaining ETLs in your company. One of your Dataflow jobs is failing because of some errors in the input data, and you need to improve reliability of the pipeline (incl. being able to reprocess all failing data).What should you do?
Đội ngũ của bạn chịu trách nhiệm phát triển và bảo trì các tiến trình ETL trong công ty. Một trong các job Dataflow của bạn bị lỗi do một số lỗi trong dữ liệu đầu vào, và bạn cần cải thiện độ tin cậy của pipeline (bao gồm cả khả năng xử lý lại tất cả dữ liệu bị lỗi). Bạn nên làm gì?
A
Add a filtering step to skip these types of errors in the future, extract erroneous rows from logs.
Thêm một bước lọc để bỏ qua các loại lỗi này trong tương lai, trích xuất các dòng bị lỗi từ logs.
B
Add a tryג€¦ catch block to your DoFn that transforms the data, extract erroneous rows from logs.
Thêm một khối try...catch vào DoFn thực hiện biến đổi dữ liệu, trích xuất các dòng bị lỗi từ logs.
C
Add a tryג€¦ catch block to your DoFn that transforms the data, write erroneous rows to Pub/Sub PubSub directly from the DoFn.
Thêm một khối try...catch vào DoFn thực hiện biến đổi dữ liệu, ghi các dòng bị lỗi trực tiếp vào Pub/Sub từ DoFn.
D
Add a tryג€¦ catch block to your DoFn that transforms the data, use a sideOutput to create a PCollection that can be stored to Pub/Sub later.
Thêm một khối try...catch vào DoFn thực hiện biến đổi dữ liệu, sử dụng sideOutput để tạo một PCollection chứa các lỗi để có thể lưu trữ vào Pub/Sub sau này.
Giải thích & Tài liệu tham khảo
Để tăng tính tin cậy cho pipeline Dataflow ETL khi gặp dữ liệu lỗi đầu vào mà vẫn có thể xử lý lại (reprocess) sau này:
- Sử dụng mô hình Dead-Letter Queue (DLQ) bằng cách đặt khối lệnh
try...catchtrong hàmDoFn. Khi phát hiện dòng dữ liệu lỗi, ta không ném ra exception làm sập pipeline, mà chuyển hướng phần tử lỗi đó sang một luồng đầu ra phụ (sideOutput). Luồng phụ này tạo ra mộtPCollectionriêng biệt chứa các lỗi, sau đó được ghi vào Pub/Sub hoặc Cloud Storage để phân tích và xử lý lại sau.
- A & B sai: Bỏ qua lỗi hoặc chỉ ghi log không giúp lưu trữ dữ liệu lỗi một cách có hệ thống để dễ dàng tái xử lý (reprocess).
- C sai: Việc mở kết nối trực tiếp đến Pub/Sub để ghi dữ liệu từ bên trong hàm
DoFncủa từng worker là một phản mẫu (anti-pattern), gây suy giảm hiệu năng nghiêm trọng do không tận dụng được cơ chế gom lô và quản lý luồng của Beam.
(Đáp án được gợi ý bởi AI)