时序数据的存储方法、分析方法及装置与流程

文档序号:18409715发布日期:2019-08-10 00:52阅读:280来源:国知局
时序数据的存储方法、分析方法及装置与流程

本发明实施例涉及互联网技术领域,更具体地,涉及一种时序数据的存储方法、分析方法及装置。



背景技术:

时序数据即时间序列数据,指的是某一指标按照时间顺序记录的序列,例如在通信业务中,通信设备性能数据即是一种时序数据,由网管系统定时从设备上采集生成数据文件并上报,描述了这个通信设备性能指标在每个时间点上的测量值,记录着当前及历史时间上的状态变化信息。时序数据操作时具有以下特点:按时间范围读取、最近数据读取概率高、数据量大和多维分析。

在海量时序数据背景下,需要进行小数据量的随机检索及多维分析时,基于时序数据的上述特点,现有技术采用hbase存储时序数据。hbase是基于hdfs(hadoopdistributedfilesystem)之上构建的nosql数据库,以key、value形式组织数据,按照key值字典顺序排列,在背景数据量较大时,小数据量随机读写性能优。但是,hbase仅能支持数据存储及查询,无法进行数据分析。

有鉴于此,可以采用sparksql方式进行hbase数据分析,但是,利用spark技术检索hbase数据时要求hbase数据必须按照传统的关系型数据库来建表,为每一个指标列分配一个hbase列,粒度太细,按照hbasequalifier(hfile中key的完整表示,包含列族、列名、版本、行键),增加了大量的冗余信息,从而增加了冗余的存储及网络开销;并且,查询的本质为全表扫描,需要将hbase数据全部扫描到内存,再进行处理,查询效率较差。



技术实现要素:

本发明实施例提供一种克服上述问题或者至少部分地解决上述问题的时序数据的存储方法、分析方法及装置。

第一方面,本发明实施例提供一种时序数据的存储方法,包括:

根据时序数据的采样时间间隔,获取所述时序数据的时间精度;

根据时序数据的时间戳以及时间精度,将时间戳相同、时间精度相同的多个时序数据聚合为文件切片;

以时间精度和时间戳为hbase行键,将所述文件切片存储至hbase数据库。

第二方面,本发明实施例提供一种时序数据的分析方法,包括:

对接收到的sql语句进行解析,获得查询时序数据的时间范围及对应的执行计划;

按照所述时间范围扫描所述hbase数据库,定位到若干时序数据切片,并读取各所述时序数据切片的value,生成sparkrdd;

根据所述执行计划对所述sparkrdd进行匹配和过滤操作,获得与所述执行计划一致的最小数据集minimaldataframe;

基于所述minimaldataframe进行sql计算。

第三方面,本发明实施例提供一种时序数据的存储装置,包括:

时间精度确定模块,用于根据时序数据的采样时间间隔,获取所述时序数据的时间精度;

聚合模块,用于根据时序数据的时间戳以及时间精度,将时间戳相同、时间精度相同的多个时序数据聚合为文件切片;

存储模块,用于以时间精度和时间戳为hbase行键,将所述文件切片存储至hbase数据库。

第四方面,本发明实施例提供一种时序数据的分析装置,包括:

解析模块,用于对接收到的sql语句进行解析,获得查询时序数据的时间范围及对应的执行计划;

扫描模块,用于按照所述时间范围扫描所述hbase数据库,定位到若干时序数据切片,并读取各所述时序数据切片的value,生成sparkrdd;

minimaldataframe生成模块,用于根据所述执行计划对所述sparkrdd进行匹配和过滤操作,获得与所述执行计划一致的最小数据集minimaldataframe;

sql执行模块,用于基于所述minimaldataframe进行sql计算。

第五方面,本发明实施例提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如第一方面或第二方面所提供的方法的步骤。

第六方面,本发明实施例提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如第一方面或第二方面所提供的方法的步骤。

本发明实施例提供一种时序数据的存储方法、分析方法及装置,将时序数据按照时间维度进行切片存放至hbase中,并基于hbase切片数据扩展sparksql执行过程,可有效提高在海量时序数据背景下进行小数据量随机检索时的响应速度及数据分析效率。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明实施例提供的时序数据的存储方法的流程示意图;

图2为本发明实施例提供的将一个时序数据集切分为多个文件切片的示意图;

图3为本发明实施例提供的行键示意图;

图4为本发明实施例提供的时序数据切片在hbase中的存放示意图;

图5为本发明实施例提供的时序数据的分析方法的流程示意图;

图6为本发明实施例提供的sql解析过程示意图;

图7为本发明实施例提供的hbase扫描过程示意图;

图8为本发明实施例提供的minimaldataframe创建过程示意图;

图9为本发明实施例提供的sql执行过程的示例图;

图10为本发明实施例提供的基于hbase改进sparksql查询逻辑的示意图;

图11为本发明实施例提供的时序数据的存储装置的结构示意图;

图12为本发明实施例提供的时序数据的分析装置的结构示意图;

图13为本发明实施例提供的电子设备的实体结构示意图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

为了便于理解,在此先对本发明实施例中涉及到的专业术语和相关概念进行解释说明。

hbase:hbase是基于hdfs之上构建的nosql数据库,以key(行键)、value的形式组织数据,按照key值字典顺序排列,形成的hfile文件存储在hdfs,主要的查询方式分为两种,按照单条或多条key值进行get,得到对应记录,或对某一范围内key值进行scan(扫描),得到多个记录,背景数据量较大时,小数据量随机读写性能优。

sparksql:spark技术中基于sql进行数据处理的组件包括dataframe、catalyst等,支持hdfs等大数据文件系统。

rdd:resilientdistributeddatasets,弹性分布式数据集,是spark中最基本的数据抽象,它代表一个不可变、可分区、里面的元素可并行计算的集合;rdd只能基于在稳定物理存储中的数据集和其他已有的rdd上执行确定性操作来创建;rdd允许用户在执行多个查询时显式地将工作集缓存在内存中,后续的查询能够重用工作集,这极大地提升了查询速度。

dataframe:是由列组成的数据集,它在概念上等同于关系数据库中的表或r/python中的dataframe,但在查询引擎上进行了丰富的优化。dataframe可以由各种各样的源构建,例如:结构化数据文件、hive中的表、外部数据库或现有的rdd。

region:region是hbase数据存储和管理的基本单位。

如图1所示,为本发明实施例提供的时序数据的存储方法的流程示意图,包括:

步骤101、根据时序数据的采样时间间隔,获取所述时序数据的时间精度;

时序数据包括测量对象标识、时间戳、指标序列等数据,时间精度定义为数据采集的时间间隔,时间间隔越短,时间精度越高。

时间戳表示采样时刻,采样时刻之间的间隔即采样时间间隔。因此,可以根据时序数据的时间戳获得采样时间间隔,从而提取时间精度。

为了便于对时序数据进行检索,可以按照采样时间、时间精度将一个大的时序数据集,分为小的时序数据集。

步骤102、根据时序数据的时间戳以及时间精度,将时间戳相同、时间精度相同的多个时序数据聚合为文件切片;

可以理解的是,将具有相同时间戳和时间精度的时序数据进行聚合,形成一个文件切片,图2为将一个时序数据集切分为多个文件切片的示意图。

从而可以有效降低qualifier信息冗余,压缩存储空间,并易于使用时间范围对时序数据进行检索。

步骤103、以时间精度和时间戳为hbase行键,将所述文件切片存储至hbase数据库。

具体地,以时间精度period和时间戳time为hbase行健rowkey,对所述文件切片进行存储。

本发明实施例提供的时序数据的存储方法,将时序数据按照时间维度进行切片存放至hbase中,可以有效降低信息冗余,压缩存储空间。

基于上述实施例的内容,所述以时间精度和时间戳为hbase行键,将所述文件切片存储至hbase数据库的步骤,具体为:

获取所述文件切片的大小;

若所述文件切片的大小大于预设字节长度,则对所述文件切片作进一步切分,生成多个子切片;

以时间精度、时间戳和子切片的切片号为行键,将所述多个子切片存储至hbase数据库中;或者,

若所述文件切片的大小小于等于预设字节长度,则将所述文件切片对应的切片号设置为零,以时间精度、时间戳和所述文件切片的切片号作为行键,将所述文件切片存储至hbase数据库中。

具体地,按照hbase存储特点,一个键值value在100kb至10mb为宜,因此,当文件切片较大时,将文件切片作进一步切分。

首先,获取文件切片的大小,若所述文件切片的大小大于预设字节长度,则对所述文件切片作进一步切分,获得多个子切片以及子切片对应的切片号。

结合hbase的检索特点,构造如图3所示的行健,即以时间精度period、时间戳time和子切片的切片号slicenumber为行键rowkey,将各文件切片存储至hbase数据库中。

在具体实施过程中,预设字节长度通常设置为10mb。

其中,对所述文件切片作进一步切分,获得多个子切片的步骤进一步包括:

首先,根据所述预设字节长度确定将所述文件切片进行切分的子切片个数n;

其中,

即按照预设字节长度(例如,10mb)大小将文件切片分割为n个子切片,子切片跟父切片具有相同的前缀(period、time)。

然后,按照时序数据的测量对象标识进行哈希计算,对哈希计算的结果取n的余数后加一,获得时序数据对应的切片号;

最后,将切片号相同的时序数据合并到一个子切片中,生成n个子切片。

若所述文件切片的大小小于等于预设字节长度,则将所述文件切片对应的切片号设置为零,仍以时间精度、时间戳和所述文件切片的切片号作为行键,将所述文件切片存储至hbase数据库中,如图4所示,为时序数据切片在hbase中的存放示意图。从图4中还可以看出,本发明实施例提供的时序数据的存储方法,将时序数据按照时间维度进行切片后,进一步将较大的切片切分为多个子切片存放至hbase中,与传统存放方式相比,可以有效降低信息冗余,压缩存储空间。

如图5所示,为本发明实施例提供的时序数据的分析方法的流程示意图,其中,所述时序数据采用上述各实施例提供的存储方法进行存储。

本发明实施例在上述时序数据的存储方法的基础上,扩展sparksql的存储逻辑,增加对上述切片存储的支持,并纠正spark查询hbase过程中的全表扫描缺陷。通常情况下,对时序数据检索时,时间范围是必须的,保证了本发明所提供的分析方法操作的可靠性,这些条件通常仅通过sql的词法解析即可得到。sparksql操作的数据仅发生在较小的范围内(一般情况下会略大于所需数据,并且随slicenumber的增加而降低无用数据范围),有效降低io,提高查询的响应速度。

如图5所示,所述时序数据的的分析方法包括:

步骤501、对接收到的sql语句进行解析,获得查询时序数据的时间范围及对应的执行计划;

具体地,对输入sql使用sparksqlparser进行词法解析,分析查询数据的,本发明实施例利用sparksql自带的catalyst完成sql解析过程,得到logicalplan,从中获取时间字段对应的查询范围及查询的列范围。图6为sql解析过程示意图。如图6所示,使用catalyst对sql进行处理后,在project阶段可获得相关表及对应的列,应用于后续切片数据裁剪及创建dataframe的过程中,在filter阶段可获取每张表对应的过滤条件,得知每张表的过滤字段及范围,进而得到处理的数据的时间范围。

步骤502、按照所述时间范围扫描所述hbase数据库,定位到若干时序数据切片,并读取各所述时序数据切片的value,生成sparkrdd;

本发明实施例使用spark提供的newhadoopapi完成hbasescan过程,根据所述时间范围传入起始行键完成扫描,针对hbase的扫描过程如图7所示。scan操作发起后会对每个hbaseregion进行scan操作,由于hbase中数据按照行键有序存放,这样根据scan操作的起始行键可以快速定位到所需的数据范围,将范围内数据连续读出。

读取各所述时序数据切片的value,生成sparkrdd,具体为:

利用newhadoopapi以key-value的形式读取各所述时序数据切片的value,生成sparkrdd:

valslice_data_rdd=sc.newapihadooprdd(……)

步骤503、根据所述执行计划对所述sparkrdd进行匹配和过滤操作,获得与所述执行计划一致的最小数据集minimaldataframe;

如图8所示,生成最小数据集minimaldataframe的具体过程为:

根据所述执行计划对所述sparkrdd进行value匹配,获得第一rdd,图8中的raw_data_rdd即为所述第一rdd;

根据所述执行计划schema对所述第一rdd进行过滤,过滤掉无用字段,即过滤掉不需要的列,获得第二rdd,图8中的filtered_raw_data_rdd即为第二rdd;

将所述第二rdd注册为dataframe,获得与所述执行计划一致的minimaldataframe,其中,所述minimaldataframe中仅包含sql计算必须的列及按照时间范围必须的行。

步骤504、基于所述minimaldataframe进行sql计算。

在构造完成最小数据集minimaldataframe后,回归sparksql处理逻辑,利用minimaldataframe进行sql计算得到处理结果。如图9所示,为最终sql执行过程的示例图。

图10给出了本发明实施例提供的基于hbase改进sparksql查询逻辑的示意图。本发明实施例提供的时序数据的分析方法,既能发挥hbase随机读取性能优势又可以规避spark查询hbase时的全表扫描过程,可实现海量时序背景数据下的数据快速检索和分析。

如图11所示,为本发明实施例提供的时序数据的存储装置的结构示意图,包括:时间精度确定模块1101、聚合模块1102和存储模块1103,其中,

时间精度确定模块1101,用于根据时序数据的采样时间间隔,获取所述时序数据的时间精度;

聚合模块1102,用于根据时序数据的时间戳以及时间精度,将时间戳相同、时间精度相同的多个时序数据聚合为文件切片;

存储模块1103,用于以时间精度和时间戳为hbase行键,将所述文件切片存储至hbase数据库。

该装置用于实现前述各方法实施例中所述的时序数据的存储方法。因此,在前述各实施例中所述的时序数据的存储方法的描述和定义,可以用于本发明实施例中各个执行模块的理解,在此不再赘述。

本发明实施例提供的时序数据的存储装置,将时序数据按照时间维度进行切片存放至hbase中,可以有效降低信息冗余,压缩存储空间。

如图12所示,为本发明实施例提供的时序数据的分析装置的结构示意图,包括:解析模块1201、扫描模块1202、minimaldataframe生成模块1203和sql执行模块1204,其中,

解析模块1201,用于对接收到的sql语句进行解析,获得查询时序数据的时间范围及对应的执行计划;

扫描模块1202,用于按照所述时间范围扫描所述hbase数据库,定位到若干时序数据切片,并读取各所述时序数据切片的value,生成sparkrdd;

minimaldataframe生成模块1203,用于根据所述执行计划对所述sparkrdd进行匹配和过滤操作,获得与所述执行计划一致的最小数据集minimaldataframe;

sql执行模块1204,用于基于所述minimaldataframe进行sql计算。

该装置用于实现前述各方法实施例中所述的时序数据的分析方法。因此,在前述各实施例中所述的时序数据的分析方法的描述和定义,可以用于本发明实施例中各个执行模块的理解,在此不再赘述。

本发明实施例提供的时序数据的分析装置,既发挥了hbase随机读取性能又规避spark查询hbase时的全表扫描过程,实现了海量时序背景数据下的数据快速检索和分析。

图13为本发明实施例提供的电子设备的实体结构示意图,如图13所示,该电子设备可以包括:处理器(processor)1310、通信接口(communicationsinterface)1320、存储器(memory)1330和通信总线1340,其中,处理器1310,通信接口1320,存储器1330通过通信总线1340完成相互间的通信。处理器1310可以调用存储在存储器1330上并可在处理器1310上运行的计算机程序,以执行上述各方法实施例所提供的时序数据的存储方法,例如包括:根据时序数据的采样时间间隔,获取所述时序数据的时间精度;根据时序数据的时间戳以及时间精度,将时间戳相同、时间精度相同的多个时序数据聚合为文件切片;以时间精度和时间戳为hbase行键,将所述文件切片存储至hbase数据库。

处理器1310还可以调用存储在存储器1330上并可在处理器1310上运行的计算机程序,以执行上述各方法实施例所提供的时序数据的分析方法,例如包括:对接收到的sql语句进行解析,获得查询时序数据的时间范围及对应的执行计划;按照所述时间范围扫描所述hbase数据库,定位到若干时序数据切片,并读取各所述时序数据切片的value,生成sparkrdd;根据所述执行计划对所述sparkrdd进行匹配和过滤操作,获得与所述执行计划一致的最小数据集minimaldataframe;基于所述minimaldataframe进行sql计算。

此外,上述的存储器1330中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实施例的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质。

本发明实施例还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述各方法实施例提供的时序数据的存储方法,例如包括:根据时序数据的采样时间间隔,获取所述时序数据的时间精度;根据时序数据的时间戳以及时间精度,将时间戳相同、时间精度相同的多个时序数据聚合为文件切片;以时间精度和时间戳为hbase行键,将所述文件切片存储至hbase数据库。

本发明实施例还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述各方法实施例提供的时序数据的分析方法,例如包括:对接收到的sql语句进行解析,获得查询时序数据的时间范围及对应的执行计划;按照所述时间范围扫描所述hbase数据库,定位到若干时序数据切片,并读取各所述时序数据切片的value,生成sparkrdd;根据所述执行计划对所述sparkrdd进行匹配和过滤操作,获得与所述执行计划一致的最小数据集minimaldataframe;基于所述minimaldataframe进行sql计算

以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。

最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1