Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >OpenTSDB翻译-降采样

OpenTSDB翻译-降采样

作者头像
用户5252199
发布于 2022-04-18 10:43:46
发布于 2022-04-18 10:43:46
1.8K0
举报

降采样(或在信号处理中,抽取)是降低数据采样率或分辨率的处理过程。例如,假设温度传感器每秒钟都向OpenTSDB系统发送数据。如果用户在一小时内查询数据,他们将获得3,600个数据点,这些数据点可以相当容易地绘制出来。但是现在,如果用户要求整整一周的数据,他们将获得604,800个数据点,并且突然间图形可能变得非常混乱。使用降采样器,单个时间序列在一个时间范围内的多个数据点在一个对齐的时间戳中与数学函数一起聚合成单个值。这样我们可以将数量从604,800减少到168。

降采样器至少需要两个组件:

  • 时间间隔(interval)- 一个时间范围(或存储桶),用于聚合这些值。例如:我们可以将1分钟或1小时甚至整整一天的多个值聚合。间隔以<Size><Units>格式指定,例如1h为1小时或30m为30分钟。从2.3开始,现在可以用“all”将时间范围内的所有结果缩减为一个值。例如,0all-sum将从查询开始到结束总结所有值。请注意,数值仍然是必需的,但它可以是零或任意其他值。
  • 聚合函数- 确定如何合并区间中的值的数学函数。与前述的聚合器一致。

  举例说明:如下时间序列A和B。数据点覆盖70秒的时间范围,每10秒一个值。假设我们希望缩减到30秒,因为用户正在查看更宽时间跨度范围的图。此外,我们使用sum聚合器将这两个序列分组为一个。我们可以指定一个降采样器30s-sum,它将创建30秒的桶并累计每个桶中的所有数据点。这将为我们提供每个序列的三个数据点:

正如你所看到的,对于每一个时间序列,我们会生成标准化的间隔边界(每30秒),这样我们就必须在时间戳t0,t0+30s和t0+60s合并序列的值。每个间隔或存储桶将包含包含存储桶时间戳(start)的数据点,并且不包括以下存储桶的时间戳(end),即[start, end)半开半闭区间。在这种情况下,第一个桶将从 t0延伸到t0+29.9999s,使用提供的聚合器,将所有值合并为一个新值。例如,对于序列A,我们对t0,t0+10s并t0+20s的值求和得到新的值20在t0。最后,查询使用sum进行分组,以便我们累加两个合成的时间序列。此时,OpenTSDB总是在降采样执行后再执行分组聚合。

注意:

  对于早期版本的OpenTSDB,新数据点的实际时间戳将是时间间隔范围中每个数据点的时间戳的平均值。从2.1和更高版本开始,每个点的时间戳与基于当前时间的模和降采样间隔的时间桶的开始对齐。

  降采样时间戳基于原始数据点时间戳的剩余部分(差值)除以下采样间隔(以毫秒为单位,即模数)进行归一化。在Java中代码是:timestamp - (timestamp % interval_ms)。例如,给定时间戳1388550980000或1/1/2014 04:36:20 UTC,1小时间隔(相当于3600000毫秒),结果时间戳将舍入为1388548800000。在4至5 UTC之间的所有数据点将在4 AM桶中收尾。如果以1小时的间隔查询一天的数据降采样,则将会收到24个数据点(假设所有24小时都有数据)。

  使用“0all-”间隔时,查询的开始时间将成为结果的时间戳。

  归一化(标准化)对于常见查询非常有效,例如将一天的数据降采样到1分钟或1小时。但是,如果尝试以奇数间隔(如36分钟)降采样,则由于模数计算的性质,时间戳可能看起来有点奇怪。给定36分钟的时间间隔以及我们上面的示例,时间间隔为2160000毫秒,结果为时间戳1388549520或04:12:00 UTC。所有在04:12与04:48之间的数据点将收尾在一个桶中。

  • 日历边界

  从OpenTSDB 2.3开始,用户可以指定基于日历的降采样而不是快速取模的方法。这对于报告目的更为有用,例如查看与人类可读时间相关的值,例如数月,数周或数天。此外,降采样可以考虑时区,并纳入夏令时的时间转移和区域偏移

  要使用日历边界,请查看正在查询的接口文档。例如,V2版本的 URI接口具有指定要使用的特定时区的参数,例如&timezone=Asia/Kabul,基于日历的降采样可通过将附加c到间隔时间单位中来启用如&m=sum:1dc-sum:my.metric。对于JSON查询,在顶层使用单独的字段timezone以及useCalendar布尔标识。如果未提供时区,则日历将使用UTC时间。

  通过日历降采样,第一个时间间隔在指定时区的查询年份捕捉到1月1日的00:00:00。从那里开始计算间隔桶直到查询的结束时间。每个存储桶都标有存储桶开始的时间戳(包含,闭区间),并包括所有的值,直到下一个存储桶开始为止。

  • 填充策略

  降采样通常用于对齐(调整)时间戳,以避免在执行分组时进行插值。由于OpenTSDB不会对时间对齐或值存在时施加约束,因此必须在查询时指定这些约束。使用降采样执行分组聚合时,如果所有序列都缺少预期间隔的值,则不会发出任何数据。例如,如果一个序列的以间隔每分钟从t0到t0+6m写入数据,但由于某种原因源在t0+3m未能写入数据,只有5个值将被序列化时,用户可能希望有6个值。在2.2及更高版本的填充策略中,您现在可以选择任意值在t0+3m发出,用户(或应用程序)将看到的值特定时间戳缺少的值,而不必找出缺少哪个时间戳。只要降采样桶为空,填充策略就会简单地发出预定义的值。

  可用的策略包括:

  • None(none) –默认行为,在序列化过程中不会发出缺失值,并在聚合序列时执行线性插值(或其他指定的插值)。
  • NaN(nan) –当序列中所有值都缺失时,在序列化输出中发出NaN 。当值缺失时跳过聚合中的序列,而不是将整个组计算转换为NaN组。
  • Null(null) – 除了在序列化过程中它发出的是一个null而不是NaN,与NaN有相同的行为。
  • Zero(zero) – 当缺少时间戳时以0替换。零值将被合并到聚合结果中。   要使用填充策略,请将策略名称(括号中的术语)附加到由连字符分隔的降采样聚合函数的末尾。例如1h-sum-nan或1m-avg-zero。   在这个例子中,我们每10秒钟报告一次数据,并且我们希望通过每10秒降采样并通过NaN填充缺失值来执行10秒报告的查询 - 时间策略10s-sum-nan:

如果我们在没有填充策略的情况下要求输出,则在t0+20s或t0+40s将会没有值或时间戳被发出。另外,B序列中在t0+30s和t0+50s的值将被线性插值,以填充要与序列A相加的值

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-10-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 大数据技术博文 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
基于VSFTPD技术与KindEditor的简单案例
1.创建图片上传的service,service实现类,controller(已实现) 2.下载KindEditor,放到静态资源中,并通过script标签指定(注意核实路径,js指定后需要重启项目)
时间静止不是简史
2020/07/27
1.6K0
基于VSFTPD技术与KindEditor的简单案例
如何快速搭建图片服务器[通俗易懂]
分布式集群的项目, 正常一般的工程是把图片放在web项目的自身服务器的工程中,但在集群环境下,会出现找不到图片的情况。
全栈程序员站长
2022/07/25
5K0
如何快速搭建图片服务器[通俗易懂]
Java实现把图片上传到图片服务器(nginx+vsftp)前言:需求:功能实现:总结:
前言: 在我另一篇笔记中已经记载了如何用nginx + vsftp搭建图片服务器(请参考nginx + vsftp搭建图片服务器),并且用vsftp的客户端工具filezilla测试过已经可用。但是在
贪挽懒月
2018/06/08
4.3K0
商品管理系统_营销系统四大系统
项目开发使用SSM(Mybatis + Spring + Springmvc)实现商品管理相关功能,MySQL作为后台数据库。功能包括查询商品列表,添加商品信息等,具体要求如下:
全栈程序员站长
2022/09/20
6950
VSFTPD技术
2、在pom.xml通过坐标引入相关jar包( 该jar用于将文件封装成字节流的数据传输的功能 )
时间静止不是简史
2020/07/27
2.3K0
VSFTPD技术
Maven项目中常用jar包的坐标以及用法(个人总结)
JUnit是一个Java语言的单元测试框架。它由Kent Beck和Erich Gamma建立,逐渐成为源于Kent Beck的sUnit的xUnit家族中最为成功的一个。 JUnit有它自己的JUnit扩展生态圈。多数Java的开发环境都已经集成了JUnit作为单元测试的工具。
时间静止不是简史
2020/07/27
3.3K0
Maven项目中常用jar包的坐标以及用法(个人总结)
手把手教你搭建分布式项目环境
根据电商项目模拟练习后 ,根据个人总结和经验重新进行了分布式项目的框架搭建 , 现总结过程步骤 ,为以后进行相关类型的开发做好基础~~~
时间静止不是简史
2020/07/27
1.5K0
手把手教你搭建分布式项目环境
ssm的环境搭建
项目架构 jar包: spring-core-3.2.3.RELEASE.jar spring核心 spring-webmvc-3.2.3.RELEASE.jar spring
微醺
2019/01/17
8010
Java 上传文件到ftp服务器「建议收藏」
前两篇文章我们搭建了一个ftp服务器,并对服务器进行了相应的配置,这篇文章我们来说一下我们如何上传文件。
全栈程序员站长
2022/10/03
3.8K0
Java 上传文件到ftp服务器「建议收藏」
IDEA环境下SSM整合------环境配置
一、做不出详细的概念叙述和文本设计,本文主要以实战步骤为主,少量解释为辅助,下面请大家牢记两幅图:
瑾诺学长
2018/09/21
1.4K0
IDEA环境下SSM整合------环境配置
Easypoi解析FTP服务器的Excel文件
Easypoi 解析 FTP 文件服务器指定目录下的 Excel 文件,并将解析的数据入库。
默存
2023/03/09
1.6K0
Easypoi解析FTP服务器的Excel文件
Spring+SpringMVC+Mybatis(开发必备技能)03、图片上传
里面至少放置1张图片或其它,否则tomcat在执行中不会创建【imgs】空文件夹 
红目香薰
2022/11/30
2930
Spring+SpringMVC+Mybatis(开发必备技能)03、图片上传
SpringBoot整合自定义FTP文件连接池
说明:通过GenericObjectPool实现的FTP连接池,记录一下以供以后使用 环境: JDK版本1.8 框架 :springboot2.1 文件服务器: Serv-U 1.引入依赖
庞小明
2019/05/25
3.5K0
【摸鱼高手】搭个自己的FTP服务器玩玩
  在搭建FTP服务器之前,先跟大家介绍下什么是FTP服务器,**不然怕有些小伙伴可能只是有个模糊的概念,学习要尽量知其然,知其所以然,不要一知半解,否则自己用着也不踏实。**
IT学习日记
2022/09/13
2K0
【摸鱼高手】搭个自己的FTP服务器玩玩
使用wangEditor批量上传并且保证图片顺序
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/100784.html原文链接:https://javaforall.cn
全栈程序员站长
2022/06/30
1.3K0
猿实战02——Spring+mybatis+maven+多模块框架搭建姿势
猿实战是一个原创系列文章,通过实战的方式,采用前后端分离的技术结合SpringMVC Spring Mybatis,手把手教你撸一个完整的电商系统,跟着教程走下来,变身猿人找到工作不是问题。想要一起实战吗?,关注公主号猿人工厂,获取基础代码,手把手带你开发属于自己的电商系统。 从今天开始,我们将进入猿实战的阶段,实现一个前后端分离的电商系统,没有开发框架怎么行?今天是第一个系列,猿人君将带你搭建后端开发框架。
山旮旯的胖子
2020/08/21
8380
猿实战02——Spring+mybatis+maven+多模块框架搭建姿势
SpringMVC文件上传
用一个专门的服务器来处理我们上传的文件。将我们的应用程序和上传文件分开为二个服务器。
星哥玩云
2022/09/14
4880
SpringMVC文件上传
SSM三大框架整合
三大框架整合的思路 1、Dao层: Mybatis的配置文件:SqlMapConfig.xml 不需要配置任何内容,需要有文件头。文件必须存在。 applicationContext-dao.xml: mybatis整合spring,通过由spring创建数据库连接池,spring管理SqlSessionFactory、mapper代理对象。需要mybatis和spring的整合包。 2、Service层: applicationContext-service.xml: 所有的service实现类都放到sp
用户2146856
2018/05/18
1.2K0
Spring高级技术应用——百战商城实现(上)
创建common_mapper, 选中父项目 ,ctrl+n ,Maven module,建子模块项目,存放实体类 (common_pojo, common_mapper),common_mapper需要额外添加坐标
时间静止不是简史
2020/07/27
2.1K0
Spring高级技术应用——百战商城实现(上)
Maven搭建SpringMVC+Mybatis项目详解
最近比较闲,复习搭建一下项目,这次主要使用spring+SpringMVC+Mybatis。项目持久层使用Mybatis3,控制层使用SpringMVC4.1,使用Spring4.1管理控制器,数据库连接池使用druid数据源,该项数据库暂使用MySQL。(如果是Oracle需修改pom.xml)
yaohong
2019/09/11
6770
相关推荐
基于VSFTPD技术与KindEditor的简单案例
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档