如何解决每秒将一万个数据点写入InfluxDB的方式
我正在使用树莓派4通过python脚本收集传感器数据。
赞:
val=mcp.read_adc(0)
每秒可以读取一万条数据。
现在我想将这些数据保存起来以进行实时分析。
我试图在读取时将它们保存到日志文件中,然后像blog那样使用telegraf进行收集:
但是它对我的流数据不起作用,因为它太慢了。
我还尝试使用python的influxdb模块直接编写,例如:
client.write(['interface,path=address,elementss=link value=3.14'],{'db':'db'},204,'line')
更糟。
那么我该如何及时将这些数据写入influxdb中。有什么解决办法吗?
非常感谢!
顺便说一句,我是一个初学者,只能使用简单的python,太可惜了。
解决方法
如果您批量处理InfluxDB OSS,它们将更快地处理写入。您可以用来执行此操作的python client has a batch parameter batch_size
。如果您正在读取〜10k点/秒,我也将尝试约10k的批处理大小。批次应压缩以加快传输速度。
write
方法还允许将标签path=address,elementss=link
作为字典发送。这样做可以减少解析工作。
您还在树莓派上运行InfluxDB还是通过网络连接从Pi上发送数据?
我注意到您在评论中说纳秒精度非常重要,但您在线路协议点示例中未包含时间戳。如果时间很关键,则应自己提供时间戳。在数据中没有明确的时间戳的情况下,InfluxDB将在“数据到达时”插入一个无法预测的时间戳。
如评论中所述,您可能需要考虑在将此数据发送到InfluxDB之前对其进行一些预处理。不知道您如何处理压电数据以检测脚步声,我们就无法提出建议。通常,将ADC值进行小批量平均(读取10-100次,具体取决于)以降低噪声。假设您的足迹检测器连续运行,则每天单个传感器将获得7.5亿个点。这是很多要存储和后处理的数据。
如果愿意,请编辑您的问题以包括搬家信息。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。