簡體   English   中英

如何設計近乎實時的數據流過濾解決方案來為 Web 客戶端提供大量數據?

[英]How to approach to design a near real-time data stream filtering solution to serve large data to a web client?

我在將包含一些用戶統計事件的大型 CSV 文件傳送到 Web 客戶端時遇到問題,通過這樣做,我需要處理和過濾數據以實現某些指標 這應該是接近實時的,因為數據源總是有數據。

我已經調查了一些,但是我不確定如何解決這個問題。 我聽到data streaming or push-based data streaming但我不確定如何使用例如 Kafka 在代理中進行流處理或過濾,然后再將結果提供給消費者。

當我解決這個問題時,作為第一步,我計划使用spliterator將該文件拆分成塊,然后將這些塊發送到分區中,但這是我感到困惑的部分:過濾是如何發生的以及在哪里發生的?

讓我盡我所能解釋令人困惑的部分:好的,我讀取文件塊不是內存不足異常,而是應用一些過濾器,因為數據未排序,我想我需要整個數據,這可能會導致內存再次例外。 所以我不確定是否需要對分區中的每個夾頭應用過濾器並合並結果,在這種情況下,我認為我需要再次對合並的結果應用相同的過濾器。 這是在這種情況下使用 Kafka 時數據流處理的想法嗎?

為了更具體,假設這是用戶活動數據,我需要找到用戶會話的平均長度。 在這種情況下,我將用戶會話分散在幾個分區中的塊中。 我是否需要在每個分區的每個塊中找到平均值並再次計算? 或者如果我需要過濾關注的用戶,在這種情況下我如何累積結果?

過濾不會發生在代理級別。 例如,如果您計划使用 Kafka Streams,則需要創建一個單獨的應用程序,該應用程序執行過濾和聚合邏輯。 您可以讀取文件並將其逐行發送到 Kafka。 您的應用程序將從主題中讀取數據並執行過濾。 如果需要計算每個用戶的平均會話數,應該設置用戶的標識符作為key,這樣id相同的用戶就會去同一個分區。 在這種情況下,您可以有多個應用程序實例,每個實例都會從它們的分區中讀取並計算統計信息。

問題是您的任務是批量處理而不是流式處理。 所以很難理解文件的結尾在哪里,你應該停止處理。 在流式傳輸中,您通常使用時間窗口計算統計數據。

另一種可能性是讓您在 KSQL 中實現邏輯。

希望這能讓你知道如何繼續前進。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM