opentsdb聚合问题

背景

在一次统计当中发现聚合出来的结果有一列值存在信息丢失情况,且为关键字段,严重影响统计结果。

定位问题

由于是的opentsdb+hdfs方案,而我们又会定时将数据聚合到db中,因此首先需要确认数据到底丢没丢。

数据首先是进入hdfs里进行原始数据存储,然后会有定时任务通过tsdb将聚合结果存放在db中,所以我们初步将这里分成2段:原始数据->hdfs、tsdb(从hdfs中聚合)->db

1、开始查询hdfs里数据,发现数据没有丢,稳了,说明恢复db统计结果可能性极大

2、于是开始查找是tsdb聚合问题,发现有些天是正常的,有些天是存在信息丢失的,稳了,说明tsdb没有问题

3、进一步查询hdfs里明细数据,发现有些数据确实存在该字段缺失情况,惊了,怎么会丢值呢

4、查看代码,if条件写的有问题,把null值也给写进去了。。。

5、为什么少量null值数据影响了大量数据呢?

6、发现以天为单位,当天出现第一条null值数据之前的数据聚合没有问题,之后的问题就全部出现该字段为null了(简单查看了opentsdb源码)

解决方案

在queries里的filters加一个filter,即根据该字段里具体的每一个key过滤,这样就能避免null值对正常数据的影响。

试过通配符、正则表达式等方式,均受null影响无效。

参考:

OpenTSDB使用总结

opentsdb

OpenTSDB - Chunked request not supported

你可能感兴趣的:(opentsdb聚合问题)