繁体   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