[英]Real-time data collection and 'offline' processing
我有連續的數據流。 我想實時地對數據進行少量處理(主要是壓縮,將某些數據從末端滾動,無論需要做什么),然后存儲數據。 大概沒問題。 HDF5文件格式應該很棒! OOC數據,沒問題。 Pytables。
現在麻煩了。 有時,作為一個完全獨立的過程,以便仍在收集數據,我想執行一個涉及數據(訂單分鍾)的耗時計算。 這涉及讀取我正在編寫的相同文件。
人們如何做到這一點?
當然,讀取您當前正在編寫的文件應該具有挑戰性,但是似乎過去它已經足夠成熟,人們已經在考慮某種巧妙的解決方案-或至少是一種自然的解決方法。
部分解決方案:
HDF5-1.10.0似乎具有SWMR-單寫入,多讀取的功能。 這似乎正是我想要的。 我找不到此最新版本的python包裝器,或者如果存在,則無法讓Python與正確版本的hdf5對話。 這里的任何提示都將受到歡迎。 我正在使用Conda軟件包管理器。
我可以想象寫入一個緩沖區,該緩沖區偶爾會刷新並添加到大型數據庫中。 如何確保在執行此操作時不會丟失數據?
這似乎在計算上也可能很昂貴,但是也許沒有解決的辦法。
我建議您看一下將Apache Kafka
添加到管道中的過程,它可以充當數據緩沖區,並幫助您分離對收集的數據完成的不同任務。
管道示例:
原始數據===> kafka主題(raw_data)===>小處理====> kafak主題(light_processing)===>從light_processing
主題讀取並寫入db或文件的進程
同時,您可以使用另一個進程從light_processing topic
或任何其他主題讀取相同的數據,並進行繁重的處理等。
如果light processing
和heavy processing
使用相同的groupId連接到kafka主題,則將復制數據,並且兩個進程將獲得相同的流
希望能有所幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.