Chuyển đổi trạng thái với Windowing trong Spark Streaming



Bài đăng trên blog này thảo luận về các chuyển đổi trạng thái với cửa sổ trong Spark Streaming. Tìm hiểu tất cả về theo dõi dữ liệu theo lô bằng cách sử dụng D-Streams toàn trạng.

Đóng góp bởi Prithviraj Bose

Trong blog này, chúng ta sẽ thảo luận về khái niệm cửa sổ của các phép biến đổi trạng thái của Apache Spark.





Chuyển đổi trạng thái là gì?

Phát trực tuyến tia lửa sử dụng kiến ​​trúc lô vi mô trong đó dữ liệu đến được nhóm thành các lô vi mô được gọi là Luồng riêng biệt (DStreams) cũng đóng vai trò là phần lập trình cơ bản. Nội bộ DStream có Tập dữ liệu phân tán có khả năng phục hồi (RDD) và kết quả của việc chuyển đổi RDD tiêu chuẩn này có thể được thực hiện.



Trong quá trình phát trực tuyến, nếu chúng ta có một ca sử dụng để theo dõi dữ liệu trên các lô thì chúng ta cần DStream toàn trạng.

Ví dụ: chúng tôi có thể theo dõi tương tác của người dùng trong một trang web trong phiên người dùng hoặc chúng tôi có thể theo dõi một thẻ bắt đầu bằng # cụ thể trên twitter theo thời gian và xem người dùng nào trên toàn cầu đang nói về nó.

Các dạng biến đổi trạng thái ful.



State-ful DStreams có hai loại - theo dõi dựa trên cửa sổ và theo dõi toàn bộ phiên.

Để theo dõi trạng thái, tất cả dữ liệu đến phải được chuyển đổi thành các cặp khóa-giá trị để các trạng thái khóa có thể được theo dõi qua các lô. Đây là điều kiện tiên quyết.

Hơn nữa, chúng ta cũng nên kích hoạt checkpointing, một khái niệm mà chúng ta sẽ thảo luận trong các blog sau.

> Theo dõi dựa trên cửa sổ

Trong theo dõi dựa trên cửa sổ, các lô đến được nhóm theo các khoảng thời gian, tức là nhóm các lô cứ sau mỗi ‘x’ giây. Các tính toán thêm trên các lô này được thực hiện bằng cách sử dụng các khoảng thời gian trượt.

sự khác biệt giữa css và css3 là gì

Ví dụ: nếu khoảng thời gian cửa sổ = 3 giây và khoảng thời gian trượt = 2 giây, thì tất cả dữ liệu đến sẽ được nhóm lại theo lô sau mỗi 3 giây và tính toán trên các lô này sẽ diễn ra sau mỗi 2 giây. Ngoài ra, chúng ta có thể nói, thực hiện tính toán 2 giây một lần trên các lô đã đến trong 3 giây trước.

spark-streaming-dstream-window

Trong sơ đồ trên, chúng ta thấy rằng các lô đến được nhóm lại sau mỗi 3 đơn vị thời gian (khoảng thời gian cửa sổ) và các phép tính được thực hiện sau mỗi 2 đơn vị thời gian (khoảng thời gian trượt).
Lưu ý: Không giống như Apache Flink, Apache Spark không có khái niệm về cửa sổ lật úp, tất cả các cửa sổ đều trượt.

NGỌN LỬA

Một API phổ biến cho các chuyển đổi dựa trên cửa sổ là

PairDStreamFunctions.reduceByKeyAndWindow .

Có một số phiên bản quá tải của API này, hãy xem phiên bản có nhiều thông số nhất. Sau phần giải thích này, phần còn lại của các phiên bản quá tải của API này sẽ tự giải thích.

Trả về: DStream đã biến đổi [(K, V)]

giảm bớt : Hàm giảm liên kết.

invReduceFunc : Hàm ngược của hàm giảm trên. Điều này là cần thiết để tính toán hiệu quả các lô gửi đến và gửi đi. Với sự trợ giúp của hàm này, giá trị của các lô được gửi đi sẽ được trừ vào giá trị tích lũy của hàm giảm ở trên. Ví dụ: nếu chúng tôi đang tính toán tổng các giá trị đến cho các khóa tương ứng thì đối với các lô gửi đi, chúng tôi sẽ trừ các giá trị cho các khóa tương ứng (miễn là chúng có trong lô hiện tại mà người khác bỏ qua).

windowDuration : Đơn vị thời gian để nhóm các lô, đây phải là bội số của khoảng thời gian của lô.

slideDuration : Đơn vị thời gian để tính toán, đây phải là bội số của khoảng thời gian hàng loạt. vách ngăn : Trình phân vùng để sử dụng để lưu trữ DStream kết quả. Để biết thêm thông tin về phân vùng, hãy đọc điều này .

filterFunc : Chức năng lọc ra các cặp khóa-giá trị đã hết hạn, ví dụ: nếu đôi khi chúng tôi không nhận được bản cập nhật cho khóa, chúng tôi có thể muốn xóa nó.

Đây là một chương trình để đếm các từ đến từ một luồng ổ cắm. Chúng tôi đã sử dụng phiên bản quá tải của hàm trên với khoảng thời gian cửa sổ là 4 giây và khoảng thời gian trượt là 2 giây.

Trong blog tiếp theo của tôi, tôi sẽ viết về theo dõi và kiểm tra phiên đầy đủ.

Có một câu hỏi cho chúng tôi? Vui lòng đề cập đến nó trong phần bình luận và chúng tôi sẽ liên hệ lại với bạn.

Bài viết liên quan:

Bộ nhớ đệm phân tán với các biến truyền phát