浏览了文档。没有找到太多关于此的信息,但是:
OpenTSDB over Hbase 是否支持修改值?(我知道它没有多大意义,因为它通常用于监控)
它是否支持向现有指标值添加新标签?
我需要对存储在 OpenTSDB 中的时间序列数据进行一些分析和修改。想知道 OpenTSDB 是否提供了实现该功能的功能。诸如将数据点标记为“无用”之类的东西,以便下次我查询数据并获取数据点时,我可以轻松地对其进行过滤,检查标签或值。
我最终决定做的是:
此链接很好地解释了 opentsdb 2.3 版如何处理数据修改。我的理解是2.4是类似的。
http://opentsdb.net/docs/build/html/user_guide/writing/index.html#duplicate-data-points
简而言之:这取决于该点每次写入的数据类型以及是否发生了压缩。如果数据类型相同(包括 # 个字节)并且没有压缩,那么它将起作用。如果有压实,它将不起作用。如果数据类型不同,则它将不起作用。将 tsd.storage.fix_duplicates 设置为 true 将允许上述场景遵循最后写入获胜策略。
引用相关部分
在 OpenTSDB 中写入数据点通常在原始写入的一个小时内是幂等的。这意味着您可以在时间戳 1356998400 处写入值 42,然后在同一时间再次写入 42,不会发生任何不好的事情。但是,如果您启用了压缩以减少存储消耗并在压缩该行数据后写入相同的数据点,则在查询该行时可能会返回异常。如果您尝试使用相同的时间戳写入两个不同的值,则在查询期间可能会引发重复数据点异常。这是由于在 1、2、4 或 8 字节和浮点数上编码整数的差异。如果第一个值是整数,第二个值是浮点数,则总是会抛出重复错误。
在大多数情况下,如果写入了重复的数据点,通常表明数据源出现问题,例如进程意外重新启动或脚本中的错误。当您查询具有一个或多个重复的行时,OpenTSDB 将通过抛出异常来“安全”失败,以便您解决问题。
使用 OpenTSDB 2.1,您可以通过将 tsd.storage.fix_duplicates 配置值设置为 true 来启用 last-write-wins。启用此标志后,在查询时,将返回最近记录的值,而不是抛出异常。还将向日志文件写入一条警告,指出发现了重复项。如果还启用了压缩,则原始压缩值将被最新值覆盖。
对于你的第二个问题,一个指标可以有一个或多个标签 k/v 与之关联。因此,一个度量可以有几个共同的或不相交的 tagk 空间以及相关的 tagv。