Vai trò quan trọng của việc tự động thử nghiệm trong ống ống dẫn dữ liệu

Các đường ống dữ liệu xây dựng trên các chương trình điện tử Apache, tính toán năng lượng nghiêm trọng, máy học tập lưu lượng và thực tế. thậm chí một lỗi logic trong một biến đổi có thể làm hỏng các báo cáo xuống hạ lưu, kích hoạt các hành động kinh doanh không chính xác, hoặc lãng phí các nguồn lực tính toán đắt tiền. kiểm tra thủ công - chỉ trỏ kiểm tra một vài hàng hoặc chạy một tập lệnh chống lại một tập hợp dữ liệu phụ không thể giữ tốc độ với sự phức tạp và vận tốc của các đường ống kỹ thuật hiện đại. khung thử nghiệm tự động này xác định khoảng cách bằng cách kiểm tra hệ thống của mỗi giai đoạn của đường ống sản xuất một kết quả nhất định. Bằng cách kiểm tra các kết quả dưới điều kiện phát triển một số các thiết lập các thiết bị, bắt đầu phát triển các đội, lấy các hệ thống, trước khi họ có thể tạo ra các sản phẩm, và xây dựng các sản phẩm bảo vệ, và các sản phẩm có tính chất lượng thời gian phụ, dựa trên thiết bị giảm thiểu thiểu số liệu.

Thiết kế một khung thử nghiệm cho đường ống khốilo

Một khuôn khổ thử nghiệm mạnh mẽ cho Spark biến nghệ thuật phát triển ống dữ liệu thành một quy tắc kỹ thuật lặp đi lặp lại. khung khung phải tách các mối quan tâm thành các thành phần có thể tái tạo lại để tạo ra các thành phần đơn vị, tích hợp và kết thúc thử nghiệm. bên dưới là các khối xây dựng cần thiết.

Name

Dữ liệu đại diện là nền tảng của việc thử nghiệm hiệu quả. Thay vì sao chép toàn bộ bảng sản xuất, rất lớn, thường nhạy cảm, và khó duy trì — tạo ra nhỏ, tập trung dữ liệu mà thực hiện điều kiện ranh giới, vô số giá trị, phím sao chép, và định dạng bất ngờ. Dùng các chương trình được xây dựng [FLT: 0] với các bản vẽ đồ để xác định thiết kế thiết bị đầu vào. Đối với nhiều kịch bản phức tạp hơn, đòn bẩy hoặc xây dựng lại những nhà máy tạo dữ liệu tổng hợp, sử dụng [FT: 0] như [FcalKKK] [FK] [FTTTTT: 0] hoặc] để sửa đổi mã hóa dữ liệu.

Những trường hợp thử nghiệm và những lời hô hào

Mỗi trường hợp thử nghiệm định nghĩa một trạng thái nhập cụ thể, thực hiện một sự chuyển đổi hoặc một chuỗi chuyển đổi, và áp dụng xác nhận chống lại kết quả.

  • bình đẳng cấp:) So sánh mọi hàng dữ liệu và thực tế mà chúng ta mong đợi.
  • Hợp lệ hóa hệ thống: ) Hãy kiểm tra xem kết xuất khớp với các tính chất đã định và vô giá trị.
  • Kiểm tra Kiểm tra: tính, tổng, hoặc các giá trị độc nhất sau khi hoạt động nhóm.
  • Thực thi luật vi phạm tính máy tính: xác nhận rằng các cột xuất phát (v. d., tuổi, cờ bất thường) rơi trong phạm vi chấp nhận được.

Ghi khẳng định như lời tuyên bố rõ ràng, tự động. Trong ScalaTest sử dụng hoặc ); trong PyTest kết hợp với các tuyên bố có thể tương thích với gấu trúc hoặc [FLT: 0] [chisisi/asset- s pul- s thư viện [FL: 1].

Môi trường thực hiện

Thử nghiệm theo chế độ cục bộ để tránh chi phí của một cụm. Cấu hình [FLT:] [FLT:] với để thực hiện đa chiều hay Python đơn giản. Đặt tính tương ứng với số ít (vM. g., để giảm thời gian thử nghiệm. Đối với các dự án Scala, [FT:6] từ thư viện [FL: 0] thử nghiệm [FL: 0] [FL1] bảo đảm một phiên chạy đơn thử nghiệm đơn lẻ, khi khởi chạy, giảm chi phí cho việc khởi chạy, ứng dụng [FL: 7] và các phiên chạy khác nhau.

Thẩm tra và báo cáo

Thực hiện tự động thực hiện việc thực hiện đã tạo ra bản ghi, thông tin thông tin qua/fail. Thông tin thử nghiệm tích hợp liên tục (CI) để các thành viên nhóm có thể nhanh chóng xác định thành phần đường ống nào bị hỏng và tại sao. Công cụ như [FLT: 0] Mọi giá [FLT: 1] hoặc các phóng viên XML đã xây dựng trong Scalaest và PyTest có thể tạo ra các báo cáo có thể hiển thị dữ liệu nhập vào, so với kết quả thực tế, và thực hiện thời gian thực hiện. Tính năng này tăng tốc độ phân tích gốc và khuyến khích chất chất chất.

Những hoạt động thực tế

Những cách tiếp cận sau đây vẽ bản đồ các thành phần cơ bản của đường ống dẫn đường lửa thế giới thực.

Comment

Một bài kiểm tra để xác minh một chức năng hay một phương pháp đơn giản có thể điều khiển một nhãn Dữ liệu. Chẳng hạn, hãy xem một chức năng làm sạch chuỗi thời gian: . Một đơn vị thử nghiệm tạo một dữ liệu nhỏ với các thông tin hợp lệ, sai dạng, và vô thời gian nhãn, gọi hàm, và khẳng định rằng cột xuất chỉ chứa các giá trị của cột. Vì việc thử nghiệm chạy trong chế độ và tiến trình chỉ xuất, nó được hoàn tất trong một giây, khuyến khích các nhà phát triển để kiểm tra mọi cạnh.

Thử ra sự kết hợp

Thí dụ, một đường ống có thể đọc các sự kiện JSON thô, các cấu trúc lồng nhau, tham gia vào các bảng chiều, và áp dụng các chức năng cửa sổ. Một thử nghiệm tích hợp chứa tất cả dữ liệu (hay thay thế tổng hợp thực tế), thực hiện toàn bộ công việc trên một giai đoạn nhất định, và khẳng định rằng kết quả của giai đoạn này trùng với một tập dữ liệu vàng được biết. Việc bắt lỗi tinh tế như là các phím gia nhập lẫn nhau, hàng bị mất kết hợp, hoặc chuyển đổi theo các bước.

Kiểm tra ống dẫn cuối đến cuối

Kết thúc cuộc thử nghiệm để hoàn tất mô phỏng toàn bộ vòng đời: đọc từ nguồn (v. g., tập tin Parquet hay chủ đề Kafka), xử lý và viết đến bồn rửa đích. Vì những thử nghiệm này phụ thuộc vào thành phần bên ngoài, chúng phù hợp nhất cho một môi trường thử nghiệm tận tụy hoặc thiết lập công-tet hóa (v. d., Docker cấu hình với Spark, MinO cho mục tiêu lưu trữ, và một bộ lọc của Kafka). Kiểm tra kết quả cuối cùng so với dữ liệu mong đợi hoặc đọc ngược lại. Cuối cùng chạy thử thường xuyên (v. d.: tối, sự tin tưởng cao nhất là không bị hỏng.

Xem xét các cuộc thử nghiệm cấp cao

Bên cạnh sự chính xác, các đường ống dữ liệu hiện đại cũng phải áp dụng chất lượng dữ liệu, hiệu suất SLAs và khả năng phục hồi tự động cũng có thể bao gồm các chiều không gian này.

Chất lượng dữ liệu kiểm tra với Deequ

[FLT: 0] Deequa ) là một thư viện được xây dựng trên đỉnh của Spark, xác định và xác định các hạn chế dữ liệu chất lượng. Tính chất lượng. Tính toán như một trường hợp: nếu không thể kiểm tra khả năng thẩm định được khả năng hoàn chỉnh (không kiểm tra) (không có tính năng đếm), tính năng độc đáo (không có phím chính, và tuân thủ, tỷ lệ phần trăm giá trị giảm trong phạm vi). Đối xử như một trường hợp: nếu không đạt được, kiểm tra tương ứng. Cách này đảm bảo rằng chất lượng không phải là một loại tổ hợp đầu tiên của đường ống dẫn công dân.

Kiểm tra hiệu quả và căng thẳng

Kiểm tra hiệu suất tự động đo xem đường ống có thể xử lý âm lượng dữ liệu trong ngân sách thời gian hay không. Dùng cùng một phiên chạy lửa cục bộ nhưng tăng số liệu thử nghiệm lên nhiều kích cỡ hàng loạt. Ghi lại khoảng thời gian thực hiện cho mỗi giai đoạn và so sánh với đường cơ bản. Nếu một mã thay đổi giới thiệu một chùm mã mới hoặc một sự kết hợp không hiệu quả, thử nghiệm sẽ cho thấy một hồi quy trình. Để có thể phân tích thực tế hơn, chạy những thử nghiệm này trên một chùm nhỏ (v. d., hãy ghi chú về khoảng thời gian thực hiện [FL: 0] A EMC: Ask [FR: 1] [FL] hoặc 1 nhóm] khi yêu cầu kéo một số mục tiêu quan trọng.

Thử ra dạng thanh công cụ

Hãy kết hợp phòng thử nghiệm Spark của bạn thành một đường ống liên tục như Jenkins, GitLab CI, hay GitHub Actions.

  • Kiểm tra mã và tải dữ liệu thử nghiệm.
  • Chạy thử nghiệm đơn vị và tích hợp trong chế độ cục bộ ( phản hồi nhanh).
  • Nếu tất cả đều vượt qua, hãy chạy từ đầu đến cuối hoặc kiểm tra hiệu suất trong một cụm tạm thời.
  • Báo cáo kiểm tra công bố và thất bại trong việc xây dựng nếu có bất kỳ thử nghiệm nào thất bại.

Việc tự động hóa này đảm bảo rằng không mã nào đến được chi nhánh chính mà không đưa ra một số kiểm tra. Nó cũng cung cấp một hồ sơ lịch sử về kết quả kiểm tra, khiến việc theo dõi hồi quy dễ dàng hơn để thực hiện các quy định cụ thể.

Những phương pháp tốt nhất để giữ những phòng thử nghiệm có thể bảo trì

  • Hãy giữ các thử nghiệm độc lập: mỗi thử nghiệm nên tạo dữ liệu nhập riêng và không phụ thuộc vào trạng thái có thể được chia sẻ. Hãy dùng các phiên chạy Spark tươi (hoặc các phiên chạy có thể sử dụng lại) để tránh ô nhiễm qua thử nghiệm.
  • Dùng đại diện nhưng dữ liệu nhỏ:[FLT: 1) một thử nghiệm chạy trong vài phần nghìn giây khuyến khích thực hiện thường xuyên. Nếu thử nghiệm đòi hỏi dữ liệu lớn để tạo ra kết quả có ý nghĩa, hãy tách nó thành một giai đoạn CN chạy chậm hơn một đêm.
  • Name
  • Trình trợ lý kiểm tra xác thực:[FLT: 1) Trích dẫn các mẫu thông thường (v. d., tạo một phiên chạy Spark, nạp dữ liệu cố định cho các chức năng hay tính năng. Tính năng này làm giảm tính năng ứng dụng và làm cho các bộ thử nghiệm dễ dàng cập nhật hơn khi đường ống thay đổi.
  • Dữ liệu kiểm tra kiểm tra sự kiểm soát: Lưu trữ tập tin cố định nhỏ (v. d., CSV, Parquet) trong kho bên dưới thư mục [FLT: 10]. Để có bộ dữ liệu lớn hơn, hãy dùng một phiên bản dữ liệu như D [FL:] D [FL:3] hoặc cửa hàng lưu trữ chúng trong một hộp S3 có tên kiểm tra.
  • Thử nghiệm âm: kiểm tra xem các đường ống xử lý đầu vào không hợp lệ - gửi ngoại lệ với thông điệp rõ ràng hoặc tạo ra dữ liệu rỗng khi thích hợp.
  • Trường hợp thử nghiệm kiểu KDE: [FLT: 1) Giữ một ngắn trong thư mục thử nghiệm giải thích mục đích của mỗi bộ dữ liệu cố định và các quy tắc kinh doanh đang được thử nghiệm.

Kết luận

Xây dựng một khuôn khổ thử nghiệm tự động cho các đường ống dữ liệu cơ bản dựa trên dữ liệu dựa trên Spark không phải là một nỗ lực một lần nhưng là một đầu tư liên tục vào dữ liệu đáng tin cậy. bằng cách kết hợp kỹ thuật thử nghiệm được xây dựng kỹ thuật nâng cao, xác định rõ ràng môi trường hành hình, và các thiết bị xử lý dữ liệu, và các đội kỹ thuật công nghệ có thể bắt lỗi sớm hơn, ngăn chặn các sự kiện chất lượng dữ liệu, và các đường ống dẫn thay đổi với sự tự tin.