簡體   English   中英

實時數據收集和“離線”處理

[英]Real-time data collection and 'offline' processing

我有連續的數據流。 我想實時地對數據進行少量處理(主要是壓縮,將某些數據從末端滾動,無論需要做什么),然后存儲數據。 大概沒問題。 HDF5文件格式應該很棒! OOC數據,沒問題。 Pytables。

現在麻煩了。 有時,作為一個完全獨立的過程,以便仍在收集數據,我想執行一個涉及數據(訂單分鍾)的耗時計算。 這涉及讀取我正在編寫的相同文件。

人們如何做到這一點?

當然,讀取您當前正在編寫的文件應該具有挑戰性,但是似乎過去它已經足夠成熟,人們已經在考慮某種巧妙的解決方案-或至少是一種自然的解決方法。

部分解決方案:

  1. HDF5-1.10.0似乎具有SWMR-單寫入,多讀取的功能。 這似乎正是我想要的。 我找不到此最新版本的python包裝器,或者如果存在,則無法讓Python與正確版本的hdf5對話。 這里的任何提示都將受到歡迎。 我正在使用Conda軟件包管理器。

  2. 我可以想象寫入一個緩沖區,該緩沖區偶爾會刷新並添加到大型數據庫中。 如何確保在執行此操作時不會丟失數據?

這似乎在計算上也可能很昂貴,但是也許沒有解決的辦法。

  1. 收集更少的數據。 那有什么樂趣?

我建議您看一下將Apache Kafka添加到管道中的過程,它可以充當數據緩沖區,並幫助您分離對收集的數據完成的不同任務。

管道示例:

原始數據===> kafka主題(raw_data)===>小處理====> kafak主題(light_processing)===>從light_processing主題讀取並寫入db或文件的進程

同時,您可以使用另一個進程從light_processing topic或任何其他主題讀取相同的數據,並進行繁重的處理等。

如果light processingheavy processing使用相同的groupId連接到kafka主題,則將復制數據,並且兩個進程將獲得相同的流

希望能有所幫助。

暫無
暫無

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

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