CN111177077A - 数据存储及数据查询方法、装置、设备、介质 - Google Patents
数据存储及数据查询方法、装置、设备、介质 Download PDFInfo
- Publication number
- CN111177077A CN111177077A CN201811330460.5A CN201811330460A CN111177077A CN 111177077 A CN111177077 A CN 111177077A CN 201811330460 A CN201811330460 A CN 201811330460A CN 111177077 A CN111177077 A CN 111177077A
- Authority
- CN
- China
- Prior art keywords
- target
- rdd
- data
- timestamp
- spark
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供一种数据存储及数据查询方法、装置、设备、介质,该方法应用于电子设备,包括:依据目标时间戳确定需存储的目标数据所处的目标时间区间;将所述目标时间区间发送至本设备加载的spark引擎,以由所述spark引擎依据所述目标时间区间从spark数据文件中获取目标数据并将所述目标数据转换为目标弹性分布式数据集RDD;从所述spark引擎获取目标RDD,并将所述目标RDD存储到所述spark引擎对应的RDD缓存空间中。解决因无法针对感兴趣时间段的数据进行操作而导致的操作效率低的问题。
Description
技术领域
本发明涉及分布式数据处理技术领域,尤其涉及的是一种数据存储及数据查询方法、装置、设备、介质。
背景技术
Spark是一种快速通用的分布式计算引擎。Spark Streaming是Spark核心API的扩展,用于可伸缩、高吞吐量、可容错地处理在线流数据,Spark Streaming可从数据源中实时批量获取数据,获取的这些数据记录在spark数据文件中。为了便于数据查询等操作,需要对spark数据文件中的数据进行相应处理及存储。
相关的数据存储方式中,spark引擎利用自身固定的逻辑执行方式来实现数据存储,具体是,spark引擎从spark数据文件中读取处于指定时间窗口内的数据,再对这些数据进行存储等操作。
由于spark引擎只能一次性读取处于指定时间窗口内的数据,数据量很大甚至会出现大小超过几十GB的情形,无法针对感兴趣时间段的数据进行操作,导致操作效率低的问题。
发明内容
有鉴于此,本发明提供一种数据存储及数据查询方法、装置、设备、介质,解决因无法针对感兴趣时间段的数据进行操作而导致的操作效率低的问题。
本发明第一方面提供一种数据存储方法,该方法应用于电子设备,包括:
依据目标时间戳确定需存储的目标数据所处的目标时间区间;
将所述目标时间区间发送至本设备加载的spark引擎,以由所述spark引擎依据所述目标时间区间从spark数据文件中获取目标数据并将所述目标数据转换为目标弹性分布式数据集RDD;
从所述spark引擎获取目标RDD,并将所述目标RDD存储到所述spark引擎对应的RDD缓存空间中。
根据本发明的一个实施例,所述目标时间戳包括至少一个字段;
所述目标时间戳的指定字段上的时间取值与第一设定时间T1进行取模运算得到的取模结果等于设定数值K。
根据本发明的一个实施例,所述目标时间戳是由外部设备输入至所述电子设备;或者,
所述目标时间戳是从所述spark数据文件每次新写入的数据的最大时间戳中确定出的;或者,
所述目标时间戳是从所述电子设备在所述spark数据文件每次新写入数据时的系统时间戳中确定出的。
根据本发明的一个实施例,所述依据目标时间戳确定需存储的目标数据所处的目标时间区间包括:
将在所述目标时间戳之前、且与所述目标时间戳相差第二设定时间T2的时间戳作为起始时间戳;
将从所述起始时间戳开始的一段指定时间段作为所述目标时间区间。
根据本发明的一个实施例,将所述目标RDD存储到所述spark引擎对应的RDD缓存空间中,包括:
对所述目标RDD中的数据进行聚合处理;
将聚合处理后的目标RDD存储到所述spark引擎对应的RDD缓存空间中。
根据本发明的一个实施例,在将所述目标RDD存储到所述spark引擎对应的RDD缓存空间中进一步包括:
将与所述目标RDD相关的关联参数记录至预设的RDD关联表中;
其中,所述关联参数至少包括所述目标时间戳、所述目标RDD在所述RDD缓存空间中的存储位置。
本发明第二方面提供一种数据查询方法,该方法应用于电子设备,包括:
当收到由外部输入的查询指令时,按照所述查询指令的指示在本设备预设的RDD关联表中查询目标时间戳,并确定与目标时间戳对应的存储位置;
依据所述存储位置从本设备已加载的spark引擎所对应的RDD缓存空间中获取目标RDD;
将获取到的目标RDD按照指定格式记录至预设的查询结果表中;
其中,所述RDD关联表中记录了与已存入至所述RDD缓存空间中的RDD相关的关联参数,所述关联参数至少包括RDD的时间戳、及RDD在所述RDD缓存空间中的存储位置。
本发明第三方面提供一种数据存储装置,该装置应用于电子设备,包括:
区间确定模块,用于依据目标时间戳确定需存储的目标数据所处的目标时间区间;
数据确定模块,用于将所述目标时间区间发送至本设备加载的spark引擎,以由所述spark引擎依据所述目标时间区间从spark数据文件中获取目标数据并将所述目标数据转换为目标弹性分布式数据集RDD;
RDD存储模块,从所述spark引擎获取目标RDD,并将所述目标RDD存储到所述spark引擎对应的RDD缓存空间中。
根据本发明的一个实施例,所述目标时间戳包括至少一个字段;
所述目标时间戳的指定字段上的时间取值与第一设定时间T0进行取模运算得到的取模结果等于设定数值K。
根据本发明的一个实施例,所述目标时间戳是由外部设备输入至所述电子设备;或者,
所述目标时间戳是从所述spark数据文件每次新写入的数据的最大时间戳中确定出的;或者,
所述目标时间戳是从所述电子设备在所述spark数据文件每次新写入数据时的系统时间戳中确定出的。
根据本发明的一个实施例,所述区间确定模块包括:
起始时间戳确定单元,用于将在所述目标时间戳之前、且与所述目标时间戳相差第二设定时间T2的时间戳作为起始时间戳;
目标时间区间确定单元,用于将从所述起始时间戳开始的一段指定时间段T3作为所述目标时间区间。
根据本发明的一个实施例,所述RDD存储模块包括:
聚合处理单元,用于对所述目标RDD中的数据进行聚合处理;
数据存储单元,用于将聚合处理后的目标RDD存储到所述spark引擎对应的RDD缓存空间中。
根据本发明的一个实施例,所述RDD存储模块进一步用于:
将与所述目标RDD相关的关联参数记录至预设的RDD关联表中;
其中,所述关联参数至少包括所述目标时间戳、所述目标RDD在所述RDD缓存空间中的存储位置。
本发明第四方面提供一种数据查询装置,该装置应用于电子设备,包括:
查询模块,用于当收到由外部输入的查询指令时,按照所述查询指令的指示在本设备预设的RDD关联表中查询目标时间戳,并确定与目标时间戳对应的存储位置;
获取模块,用于依据所述存储位置从本设备已加载的spark引擎所对应的RDD缓存空间中获取目标RDD;
记录模块,用于将获取到的目标RDD按照指定格式记录至预设的查询结果表中;
其中,所述RDD关联表中记录了与已存入至所述RDD缓存空间中的RDD相关的关联参数,所述关联参数至少包括RDD的时间戳、及RDD在所述RDD缓存空间中的存储位置。
本发明第五方面提供一种电子设备,包括处理器及存储器;所述存储器存储有可被处理器调用的程序;其中,所述处理器执行所述程序时,实现如前述实施例中所述的数据存储方法、或数据查询方法。
本发明第六方面提供一种机器可读存储介质,其上存储有程序,该程序被处理器执行时,实现如前述实施例中所述的数据存储方法、或数据查询方法。
本发明实施例具有以下有益效果:
本发明实施例中,可以依据目标时间戳来确定需存储的目标数据所处的目标时间区间,实现感兴趣目标时间区间的自定义,并利用spark引擎从spark数据文件中获取处于目标时间区间内的目标数据,可针对spark引擎的指定时间窗口中处于目标时间区间内的感兴趣数据进行操作,减少操作数据量,有利于提高存储、查询等一系列操作的效率。
附图说明
图1是本发明一实施例的数据存储方法的流程示意图;
图2是本发明一实施例的数据存储装置的结构框图;
图3是本发明一实施例的数据查询方法的流程示意图;
图4是本发明一实施例的数据查询装置的结构框图;
图5是本发明一示例性实施例的电子设备的结构框图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本发明相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本发明的一些方面相一致的装置和方法的例子。
在本发明使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本发明。在本发明和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本发明可能采用术语第一、第二、第三等来描述各种器件,但这些信息不应限于这些术语。这些术语仅用来将同一类型的器件彼此区分开。例如,在不脱离本发明范围的情况下,第一器件也可以被称为第二器件,类似地,第二器件也可以被称为第一器件。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
本发明实施例的数据存储方法和/或数据查询方法的执行主体可以是电子设备,进一步地可以为电子设备的处理器,其中,所述处理器可以为一个或多个,所述处理器可以为通用处理器或者专用处理器。在电子设备上可以加载有spark引擎,处理器在执行本发明实施例的方法所对应的程序时,可与spark引擎进行交互,交互的内容可以是指令、数据等。电子设备例如可以是终端设备等,只要是能够加载spark引擎及能够运行程序的设备即可。
下面对本发明第一方面提供的数据存储方法进行更具体的描述,但不应以此为限。在一个实施例中,参看图1,数据存储方法应用于电子设备,该方法可以包括以下步骤:
S100:依据目标时间戳确定需存储的目标数据所处的目标时间区间;
S200:将所述目标时间区间发送至本设备加载的spark引擎,以由所述spark引擎依据所述目标时间区间从spark数据文件中获取目标数据并将所述目标数据转换为目标弹性分布式数据集RDD;
S300:从所述spark引擎获取目标RDD,并将所述目标RDD存储到所述spark引擎对应的RDD缓存空间中。
本发明实施例中,可以通过在电子设备中运行指定客户端来实现上述步骤S100~S300,客户端是上层应用,可与底层的spark引擎交互。
步骤S100中,依据目标时间戳确定需存储的目标数据所处的目标时间区间。
当然,在步骤S100之前,可先确定出目标时间戳。该目标时间戳是确定目标时间区间所需的时间戳,可以是当前时间戳,也可以是历史时间戳,只要是用户感兴趣的时间戳,能够确定对应的感兴趣目标时间区间即可。具体从何处获取目标时间戳也不限制,例如可以是由外部输入的、从电子设备的系统时钟中获取的、或者从spark引擎中获取的。
依据目标时间戳确定目标时间区间的具体方式可以是预先设定的,比如预设有区间计算函数,当输入目标时间戳至该区间计算函数时,可计算出对应的目标时间区间,输入的时间戳不同,得到的目标时间区间也不同。
目标时间区间是依据目标时间戳确定出的感兴趣时间区间,相比于spark数据文件中的其他数据而言,时间戳处于目标时间区间的数据是当前更感兴趣的数据,是当前需要从spark数据文件中获取并进行存储的数据。
步骤S200中,将所述目标时间区间发送至本设备加载的spark引擎,以由所述spark引擎依据所述目标时间区间从spark数据文件中获取目标数据并将所述目标数据转换为目标弹性分布式数据集RDD。
spark数据文件中记录有spark引擎利用Spark streaming从数据源中批量获取的数据(当然也可以是其他方式获取的数据),在批量获取数据的过程中,将新获取的数据写入到spark数据文件中,spark数据文件会不断的更新。
Spark Streaming支持从多种数据源获取数据,包括KafKa、Flume、Twitter、ZeroMQ、Kinesis、TCP sockets等数据源。不同数据源获取的数据可以记录在不同的spark数据文件中,通过记录与各个spark数据文件关联的文件索引的目录来查找对应的spark数据文件,spark数据文件的格式也可以因数据的格式不同而不同。当然,不同数据源获取的数据也可以记录在同一个spark数据文件中,每个数据源获取的数据对应于spark数据文件中的一个数据块。
发送目标时间区间的方式可以是,客户端可以向spark引擎发出获取数据的请求,请求中携带着该目标时间区间。spark引擎收到请求后,可依据请求中携带的目标时间区间从spark数据文件中获取出时间戳处于目标时间区间的数据(每个数据可以带有一个时间戳),将获取出的数据确定为目标数据,并将这批目标数据转换成一个目标RDD,返回目标RDD给客户端。将目标数据转换成目标RDD的方式不限,例如是将所有目标数据以指定格式封装起来,得到一个目标RDD。
spark引擎中可设置有时间戳列表,记录了数据的时间戳及数据在spark数据文件中的位置。在确定目标数据时,可先查找该时间戳列表中处于目标时间区间内的时间戳,按照查找出的时间戳对应的位置从spark数据文件中获取出对应的目标数据。
在spark引擎从spark数据文件中读取出数据并将数据转换成目标RDD后,可将spark数据文件中已读取过的数据删除、或在下次数据写入时覆盖这些数据,以避免spark数据文件数据量过大的问题。
步骤S300中,从所述spark引擎获取目标RDD,并将所述目标RDD存储到所述spark引擎对应的RDD缓存空间中。
spark引擎在转换得到目标RDD后可将目标RDD发送至客户端,客户端可接收spark引擎发送给客户端的目标RDD,接收的目标RDD可以存储到spark引擎对应的RDD缓存空间中。spark引擎对应的RDD缓存空间中的数据可供spark引擎读取,当然也可供其他应用读取。RDD缓存空间可以是电子设备开辟出的用于缓存RDD的存储空间。
客户端获取到目标RDD后,可直接将获取的目标RDD进行存储,例如在数据清洗等应用场景中;当然,也可以进行一定的数据处理后再存储,例如对目标RDD的聚合、数据筛选等处理后再存储,具体不限。
本发明实施例中,可以依据目标时间戳来确定需存储的目标数据所处的目标时间区间,实现感兴趣目标时间区间的自定义,并利用spark引擎从spark数据文件中获取处于目标时间区间内的目标数据,可针对spark引擎的指定时间窗口中处于目标时间区间内的感兴趣数据进行操作,减少操作数据量,有利于提高存储、查询等一系列操作的效率。
在一个实施例中,上述数据存储方法流程可由数据存储装置100执行,如图2所示,数据存储装置100主要包含3个模块:区间确定模块101,数据确定模块102和RDD存储模块103。区间确定模块101用于执行上述步骤S100,数据确定模块102用于执行上述步骤S200,RDD存储模块103用于执行上述步骤S300。
在一个实施例中,所述目标时间戳包括至少一个字段,比如包括年、月、日、时、分、秒等。所述目标时间戳的指定字段上的时间取值与第一设定时间T1进行取模运算得到的取模结果等于设定数值K。
指定字段可以是日、时、分、秒这些字段中的任意一个,第一设定时间T1可以根据需要预置,设定数值K可以是范围0~T1-1中的任意一个整数。
可以不断获取时间戳,在时间戳满足指定字段上的时间取值与第一设定时间T1进行取模运算得到的取模结果等于设定数值K(下面简称为指定条件)时,确定该时间戳为目标时间戳,执行后续依据目标时间戳确定目标时间区间的步骤。对目标时间戳进行指定条件的过滤,可避免获取到无用时间戳时也执行相应操作的问题。
优选的,可以通过以下的步骤来实现确定目标时间戳:
S001:将获取的时间戳的指定字段上的时间取值与T1进行取模运算;
S002:判断取模结果是否等于K;
S003:若是,则确定该时间戳为目标时间戳。接着执行步骤S100。
具体的,以指定字段为分字段为例,目标时间戳为2018-09-04 00:19:45时,指定字段上的时间取值便为19分,用时间取值与T1取模,例如,T1为5分,K为0,用19对5取模,即计算19与5的余数,得到取模结果为4,取模结果不等于0,则确定时间戳不满足上述指定条件,不是目标时间戳。
当取模结果等于设定数值时,才确定时间戳满足指定条件,继续执行下面的步骤。例如,指定字段上的时间取值为20分,T1为5分,K为0,用20对5取模,得到取模结果为0,取模结果等于K,则确定时间戳满足指定条件,该时间戳为目标时间戳。
本实施例中,在目标时间戳的指定字段上的时间取值与T1进行取模运算得到的取模结果需要等于K,使得不是获取到的每个时间戳都需进行后面的操作,在时间戳的获取时间间隔小于T1时,可以实现每隔T1执行一次数据存储,过滤掉不需要的时间戳。
此外,由于每隔T1执行一次目标RDD的存储,可将spark引擎的指定时间窗口拆分出多个时间长度为T1的时间窗口,存储的RDD颗粒更小,数据处理、存储等操作效率更高,并且,RDD缓存空间中的数据可每隔T1动态更新,更新频率更高,可提高后续数据关联、查询等命中率及操作效率。
当然,时间戳的获取可以是定期或不定期的,在时间戳的获取时间间隔不小于T1的情况下,上述方式同样是适用的,只是执行数据存储的时间间隔相应会发生变化。
在一个实施例中,所述目标时间戳是由外部设备输入至所述电子设备;或者,
所述目标时间戳是从所述spark数据文件每次新写入的数据的最大时间戳中确定出的;或者,
所述目标时间戳是从所述电子设备在所述spark数据文件每次新写入数据时的系统时间戳中确定出的。
结合前述实施例而言,满足上述指定条件的时间戳是目标时间戳,因而可依据上述指定条件从获取的时间戳中确定出目标时间戳,获取的时间戳可以是由外部设备输入的、spark数据文件中的最新写入数据的最大时间戳、或者在spark数据文件有新写入的数据时电子设备读取的系统时间戳。当然,上述方式获取的时间戳也可直接作为目标时间戳。
下面具体来说从获取的时间戳中确定出目标时间戳的方式:
第一种,接收的由外部设备输入至所述电子设备的时间戳,判断时间戳是否满足上述指定条件,若是,则确定该时间戳为目标时间戳;
第二种,当所述spark数据文件中有数据写入时,获取所述spark数据文件中新写入的数据的最大时间戳,判断获取的最大时间戳是否满足上述指定条件,若是,则确定该时间戳为目标时间戳;
第三种,当所述spark数据文件中有数据写入时,电子设备获取本地的系统时间戳,判断获取的系统时间戳是否满足上述指定条件,若是,则确定该时间戳为目标时间戳。
可以理解,目标时间戳的来源及确定方式也不限于此。
在一个实施例中,步骤S100中,所述依据目标时间戳确定需存储的目标数据所处的目标时间区间,可以包括以下步骤:
S101:将在所述目标时间戳之前、且与所述目标时间戳相差第二设定时间T2的时间戳作为起始时间戳;
S102:将从所述起始时间戳开始的一段指定时间段作为所述目标时间区间。
为了避免从spark数据文件中获取目标数据时,仍有部分时间戳处于目标时间区间内的数据还未被记录到spark数据文件中,而导致客户端获取的目标RDD中存在数据遗漏的问题。优选的,目标时间区间的结束时间戳早于目标时间戳。
具体的,T2比如可以为1天,可以精确到时分秒这些字段,目标时间戳为2018-09-03 08:19:45,则起始时间戳为2018-09-02 08:19:45,指定时间段的长度可以为上述的T1比如为5分,则结束时间戳为2018-09-02 08:24:45,相应的,目标时间区间为2018-09-0208:19:45~2018-09-02 08:24:45。
在前述实施例的基础上,目标时间区间每隔T1便重新确定一次即滑动一次,当目标时间区间的区间长度与T1相同时,滑动的时间长度等于T1,可避免数据被重复读取或遗漏的问题。
在一个实施例中,步骤S300中,将所述目标RDD存储到所述spark引擎对应的RDD缓存空间中,包括:
S301:对所述目标RDD中的数据进行聚合处理;
S302:将聚合处理后的目标RDD存储到所述spark引擎对应的RDD缓存空间中。
客户端可以通过自身预设的聚合方式对获取的目标RDD进行聚合。目标RDD的一条数据可具有多个属性,可以依据指定属性确定需要合并的数据,并对待合并的属性上的数值进行聚合。具体的聚合运算例如可以包括求和、求均值、求最值等统计运算。
具体的,比如目标RDD的数据包括用户名、时间戳、登录次数,对用户名相同且时间戳处于相同时间范围的数据的登录次数进行求和,所有求和后的数据构成聚合处理后的目标RDD。
或者,客户端也可以利用spark引擎来对获取到的目标RDD进行聚合处理。spark引擎通过自身设定的聚合方式对目标RDD的数据进行聚合处理后,得到七个时间长度为七天的聚合窗口数据。每个聚合窗口数据是由目标RDD中处于对应时间窗口内的数据聚合得到的,第一聚合窗口数据的时间窗口起始时间比第二聚合窗口数据的时间窗口起始时间晚一天,第二聚合窗口数据的时间窗口起始时间比第三聚合窗口数据的时间窗口起始时间晚一天,以此类推。客户端可以从这七个聚合窗口数据中选取目标聚合窗口数据作为聚合结果进行存储,比如从七个聚合窗口数据中选取对应时间窗口的起始时间最早的聚合窗口数据作为聚合结果。
例如,目标时间区间为2018-09-02 08:19:45~2018-09-02 08:24:45,利用spark引擎对RDD的数据进行聚合处理得到七个聚合窗口数据:
(1)|2018-08-27 08:00:00|2018-09-03 08:00:00|api1|19:45|10|
(2)|2018-08-28 08:00:00|2018-09-04 08:00:00|api1|19:45|10|
(3)|2018-08-29 08:00:00|2018-09-05 08:00:00|api1|19:45|10|
(4)|2018-08-30 08:00:00|2018-09-06 08:00:00|api1|19:45|10|
(5)|2018-08-31 08:00:00|2018-09-07 08:00:00|api1|19:45|10|
(6)|2018-09-01 08:00:00|2018-09-08 08:00:00|api1|19:45|10|
(7)|2018-09-02 08:00:00|2018-09-09 08:00:00|api1|19:45|10|
以聚合窗口数据(1)为例进行解释,“2018-08-27 08:00:00”与“19:45”构成聚合窗口数据对应时间窗口的起始时间,“2018-09-03 08:00:00”与“19:45”构成聚合窗口数据对应时间窗口的结束时间,“api1”表示用户标识,“10”表示登录次数为10次。上述的聚合窗口数据中,聚合窗口数据(1)是其中的对应时间窗口的起始时间最早的,因而将聚合窗口数据(1)作为聚合结果。
在一个实施例中,在将所述目标RDD存储到所述spark引擎对应的RDD缓存空间中,进一步包括以下步骤:
S303:将与所述目标RDD相关的关联参数记录至预设的RDD关联表中;
其中,所述关联参数至少包括所述目标时间戳、所述目标RDD在所述RDD缓存空间中的存储位置。
步骤S303可以在目标RDD存储到RDD缓存空间之前或之后执行,只要能够在RDD关联表中记录关于该目标RDD的关联参数即可。客户端中可预设有一个以上的RDD关联表,在初始时,RDD关联表可被初始化为空白状态,而后每存储一个目标RDD便将对应的关联参数增加至该RDD关联表中。不同数据源得到的RDD可记录到不同的RDD关联表中。
通过RDD关联表,可以通过客户端实现对RDD缓存空间中RDD的查询,在RDD关联表中查询到满足查询条件的时间戳时,可依据与查询到的时间戳对应的存储位置从RDD缓存空间获取相应RDD。
下面对本发明第二方面提供的数据查询方法进行更具体的描述,但不应以此为限。在一个实施例中,参看图3,该方法应用于电子设备,包括以下步骤:
T100:当收到由外部输入的查询指令时,按照所述查询指令的指示在本设备预设的RDD关联表中查询目标时间戳,并确定与目标时间戳对应的存储位置;
T200:依据所述存储位置从本设备已加载的spark引擎所对应的RDD缓存空间中获取目标RDD;
T300:将获取到的目标RDD按照指定格式记录至预设的查询结果表中;
其中,所述RDD关联表中记录了与已存入至所述RDD缓存空间中的RDD相关的关联参数,所述关联参数至少包括RDD的时间戳、及RDD在所述RDD缓存空间中的存储位置。
本发明实施例中,可以通过在电子设备中运行指定客户端来实现上述步骤T100~T300,客户端是上层应用,可与底层的spark引擎交互。
步骤T100中,查询指令可以指示查询出RDD关联表中的全部时间戳。或者,查询指令中可以携带有查询条件,查询指令指示查询出RDD关联表中满足查询条件的时间戳。
查询指令指示查询出RDD关联表中的全部时间戳时,遍历RDD关联表中的时间戳,将遍历到的时间戳确定为目标时间戳,并确定RDD关联表中与目标时间戳对应的存储位置。
或者,查询指令中携带查询条件并指示查找满足查询条件的时间戳时,遍历RDD关联表中的时间戳,判断遍历到的时间戳与查询条件是否匹配,将匹配的时间戳确定为目标时间戳,并确定RDD关联表中与目标时间戳对应的存储位置。
步骤T200中,依据所述存储位置从本设备已加载的spark引擎所对应的RDD缓存空间中获取目标RDD。
spark引擎对应的RDD缓存空间中存储有由所述客户端存入的不同目标时间区间对应的RDD;各RDD是所述客户端利用spark引擎对spark数据文件中时间戳处于目标时间区间内的目标数据进行格式转换得到的。
由于RDD关联表中记录的存储位置是RDD在RDD缓存空间中的存储位置,因而根据存储位置可定位RDD缓存空间中对应的RDD。
步骤T300中,将获取到的目标RDD按照指定格式记录至预设的查询结果表中。
该指定格式可以是预设在电子设备中的,客户端在查询指令的触发下获取该指定格式比如包括数据记录在查询结果表中的数据格式等。当然,在查询指令的触发下,还可获取需从RDD缓存空间中读取的所有数据的大小等,并依据数据大小创建查询结果表的用于记录目标RDD的表项。
相关数据查询方式中,spark引擎利用自身固有的查询逻辑方式实现,每次查询时,都需要删除旧表,重新创建新表来记录查询结果,操作效率很低,且查询周期较长,对于后续需用到查询结果的操作比如关联操作来说效率非常低。
而本发明实施例中,不再利用spark引擎固有的查询逻辑方式实现查询,每次查询只需将查询结果记录至查询结果表中,不用通过删除和重新创建表的方式来实现结果更新,操作效率更高;并且,由于RDD存储时会相应更新RDD关联表,因而RDD关联表也是随RDD一并动态更新的,在短期内可提高查询RDD关联表时的命中率,提高查询及后续处理的效率。
在一个实施例中,上述数据查询方法流程可由数据查询装置200执行,如图4所示,数据查询装置200主要包含3个模块:查询模块201,获取模块202和记录模块203。查询模块201用于执行上述步骤T100,获取模块202用于执行上述步骤T200,记录模块203用于执行上述步骤T300。
本发明第三方面提供一种数据存储装置,该装置应用于电子设备,参看图2,在一个实施例中,该数据存储装置100包括:
区间确定模块101,用于依据目标时间戳确定需存储的目标数据所处的目标时间区间;
数据确定模块102,用于将所述目标时间区间发送至本设备加载的spark引擎,以由所述spark引擎依据所述目标时间区间从spark数据文件中获取目标数据并将所述目标数据转换为目标弹性分布式数据集RDD;
RDD存储模块103,从所述spark引擎获取目标RDD,并将所述目标RDD存储到所述spark引擎对应的RDD缓存空间中。
在一个实施例中,所述目标时间戳包括至少一个字段;
所述目标时间戳的指定字段上的时间取值与第一设定时间T0进行取模运算得到的取模结果等于设定数值K。
在一个实施例中,所述目标时间戳是由外部设备输入至所述电子设备;或者,
所述目标时间戳是从所述spark数据文件每次新写入的数据的最大时间戳中确定出的;或者,
所述目标时间戳是从所述电子设备在所述spark数据文件每次新写入数据时的系统时间戳中确定出的。
在一个实施例中,所述区间确定模块包括:
起始时间戳确定单元,用于将在所述目标时间戳之前、且与所述目标时间戳相差第二设定时间T2的时间戳作为起始时间戳;
目标时间区间确定单元,用于将从所述起始时间戳开始的一段指定时间段T3作为所述目标时间区间。
在一个实施例中,所述RDD存储模块包括:
聚合处理单元,用于对所述目标RDD中的数据进行聚合处理;
数据存储单元,用于将聚合处理后的目标RDD存储到所述spark引擎对应的RDD缓存空间中。
在一个实施例中,所述RDD存储模块进一步用于:
将与所述目标RDD相关的关联参数记录至预设的RDD关联表中;
其中,所述关联参数至少包括所述目标时间戳、所述目标RDD在所述RDD缓存空间中的存储位置。
本发明第三方面提供的上述装置中各个单元的功能和作用的实现过程具体详见本发明第一方面提供的方法中对应步骤的实现过程,在此不再赘述。
本发明第四方面提供一种数据查询装置,该装置应用于电子设备,参看图4,在一个实施例中,该数据查询装置200包括:
查询模块201,用于当收到由外部输入的查询指令时,按照所述查询指令的指示在本设备预设的RDD关联表中查询目标时间戳,并确定与目标时间戳对应的存储位置;
获取模块202,用于依据所述存储位置从本设备已加载的spark引擎所对应的RDD缓存空间中获取目标RDD;
记录模块203,用于将获取到的目标RDD按照指定格式记录至预设的查询结果表中;
其中,所述RDD关联表中记录了与已存入至所述RDD缓存空间中的RDD相关的关联参数,所述关联参数至少包括RDD的时间戳、及RDD在所述RDD缓存空间中的存储位置。
本发明第四方面提供的上述装置中各个单元的功能和作用的实现过程具体详见本发明第二方面提供的方法中对应步骤的实现过程,在此不再赘述。
对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元。
本发明实施例还提供一种电子设备,包括处理器及存储器;所述存储器存储有可被处理器调用的程序;其中,所述处理器执行所述程序时,实现如前述实施例中所述的数据存储方法、或数据查询方法。
本发明数据存储装置、和/或数据查询装置的实施例可以应用在电子设备上。以软件实现为例,作为一个逻辑意义上的装置,是通过其所在电子设备的处理器将非易失性存储器中对应的计算机程序指令读取到内存中运行形成的。从硬件层面而言,如图5所示,图5是本发明根据一示例性实施例示出的数据存储装置100所在电子设备的一种硬件结构图,除了图5所示的处理器510、内存530、接口520、以及非易失性存储器540之外,实施例中装置100所在的电子设备通常根据该电子设备的实际功能,还可以包括其他硬件,对此不再赘述。
本发明还提供一种机器可读存储介质,其上存储有程序,该程序被处理器执行时,实现如前述实施例中所述的数据存储方法、或数据查询方法。
本发明可采用在一个或多个其中包含有程序代码的存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。机器可读存储介质包括永久性和非永久性、可移动和非可移动媒体,可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。机器可读存储介质的例子包括但不限于:相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。
Claims (16)
1.一种数据存储方法,其特征在于,该方法应用于电子设备,包括:
依据目标时间戳确定需存储的目标数据所处的目标时间区间;
将所述目标时间区间发送至本设备加载的spark引擎,以由所述spark引擎依据所述目标时间区间从spark数据文件中获取目标数据并将所述目标数据转换为目标弹性分布式数据集RDD;
从所述spark引擎获取目标RDD,并将所述目标RDD存储到所述spark引擎对应的RDD缓存空间中。
2.如权利要求1所述的数据存储方法,其特征在于,所述目标时间戳包括至少一个字段;
所述目标时间戳的指定字段上的时间取值与第一设定时间T1进行取模运算得到的取模结果等于设定数值K。
3.如权利要求2所述的数据存储方法,其特征在于,所述目标时间戳是由外部设备输入至所述电子设备;或者,
所述目标时间戳是从所述spark数据文件每次新写入的数据的最大时间戳中确定出的;或者,
所述目标时间戳是从所述电子设备在所述spark数据文件每次新写入数据时的系统时间戳中确定出的。
4.如权利要求1所述的数据存储方法,其特征在于,所述依据目标时间戳确定需存储的目标数据所处的目标时间区间包括:
将在所述目标时间戳之前、且与所述目标时间戳相差第二设定时间T2的时间戳作为起始时间戳;
将从所述起始时间戳开始的一段指定时间段作为所述目标时间区间。
5.如权利要求1所述的数据存储方法,其特征在于,将所述目标RDD存储到所述spark引擎对应的RDD缓存空间中,包括:
对所述目标RDD中的数据进行聚合处理;
将聚合处理后的目标RDD存储到所述spark引擎对应的RDD缓存空间中。
6.如权利要求1所述的数据存储方法,其特征在于,在将所述目标RDD存储到所述spark引擎对应的RDD缓存空间中进一步包括:
将与所述目标RDD相关的关联参数记录至预设的RDD关联表中;
其中,所述关联参数至少包括所述目标时间戳、所述目标RDD在所述RDD缓存空间中的存储位置。
7.一种数据查询方法,其特征在于,该方法应用于电子设备,包括:
当收到由外部输入的查询指令时,按照所述查询指令的指示在本设备预设的RDD关联表中查询目标时间戳,并确定与目标时间戳对应的存储位置;
依据所述存储位置从本设备已加载的spark引擎所对应的RDD缓存空间中获取目标RDD;
将获取到的目标RDD按照指定格式记录至预设的查询结果表中;
其中,所述RDD关联表中记录了与已存入至所述RDD缓存空间中的RDD相关的关联参数,所述关联参数至少包括RDD的时间戳、及RDD在所述RDD缓存空间中的存储位置。
8.一种数据存储装置,其特征在于,该装置应用于电子设备,包括:
区间确定模块,用于依据目标时间戳确定需存储的目标数据所处的目标时间区间;
数据确定模块,用于将所述目标时间区间发送至本设备加载的spark引擎,以由所述spark引擎依据所述目标时间区间从spark数据文件中获取目标数据并将所述目标数据转换为目标弹性分布式数据集RDD;
RDD存储模块,从所述spark引擎获取目标RDD,并将所述目标RDD存储到所述spark引擎对应的RDD缓存空间中。
9.如权利要求8所述的数据存储装置,其特征在于,所述目标时间戳包括至少一个字段;
所述目标时间戳的指定字段上的时间取值与第一设定时间T0进行取模运算得到的取模结果等于设定数值K。
10.如权利要求9所述的数据存储装置,其特征在于,所述目标时间戳是由外部设备输入至所述电子设备;或者,
所述目标时间戳是从所述spark数据文件每次新写入的数据的最大时间戳中确定出的;或者,
所述目标时间戳是从所述电子设备在所述spark数据文件每次新写入数据时的系统时间戳中确定出的。
11.如权利要求8所述的数据存储装置,其特征在于,所述区间确定模块包括:
起始时间戳确定单元,用于将在所述目标时间戳之前、且与所述目标时间戳相差第二设定时间T2的时间戳作为起始时间戳;
目标时间区间确定单元,用于将从所述起始时间戳开始的一段指定时间段T3作为所述目标时间区间。
12.如权利要求8所述的数据存储装置,其特征在于,所述RDD存储模块包括:
聚合处理单元,用于对所述目标RDD中的数据进行聚合处理;
数据存储单元,用于将聚合处理后的目标RDD存储到所述spark引擎对应的RDD缓存空间中。
13.如权利要求8所述的数据存储装置,其特征在于,所述RDD存储模块进一步用于:
将与所述目标RDD相关的关联参数记录至预设的RDD关联表中;
其中,所述关联参数至少包括所述目标时间戳、所述目标RDD在所述RDD缓存空间中的存储位置。
14.一种数据查询装置,其特征在于,该装置应用于电子设备,包括:
查询模块,用于当收到由外部输入的查询指令时,按照所述查询指令的指示在本设备预设的RDD关联表中查询目标时间戳,并确定与目标时间戳对应的存储位置;
获取模块,用于依据所述存储位置从本设备已加载的spark引擎所对应的RDD缓存空间中获取目标RDD;
记录模块,用于将获取到的目标RDD按照指定格式记录至预设的查询结果表中;
其中,所述RDD关联表中记录了与已存入至所述RDD缓存空间中的RDD相关的关联参数,所述关联参数至少包括RDD的时间戳、及RDD在所述RDD缓存空间中的存储位置。
15.一种电子设备,其特征在于,包括处理器及存储器;所述存储器存储有可被处理器调用的程序;其中,所述处理器执行所述程序时,实现如权利要求1-6中任意一项所述的数据存储方法、或如权利要求7所述的数据查询方法。
16.一种机器可读存储介质,其特征在于,其上存储有程序,该程序被处理器执行时,实现如权利要求1-6中任意一项所述的数据存储方法、或如权利要求7所述的数据查询方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811330460.5A CN111177077B (zh) | 2018-11-09 | 2018-11-09 | 数据存储及数据查询方法、装置、设备、介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811330460.5A CN111177077B (zh) | 2018-11-09 | 2018-11-09 | 数据存储及数据查询方法、装置、设备、介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111177077A true CN111177077A (zh) | 2020-05-19 |
CN111177077B CN111177077B (zh) | 2023-05-26 |
Family
ID=70653482
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811330460.5A Active CN111177077B (zh) | 2018-11-09 | 2018-11-09 | 数据存储及数据查询方法、装置、设备、介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111177077B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112000619A (zh) * | 2020-08-21 | 2020-11-27 | 杭州安恒信息技术股份有限公司 | 一种时间顺序数据存储方法、装置、设备及可读存储介质 |
Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080208904A1 (en) * | 2007-02-26 | 2008-08-28 | Friedlander Robert R | System and method for deriving a hierarchical event based database optimized for analysis of complex accidents |
US20130151797A1 (en) * | 2011-12-13 | 2013-06-13 | Ati Technologies Ulc | Method and apparatus for centralized timestamp processing |
US20130242326A1 (en) * | 2012-03-13 | 2013-09-19 | Ricoh Company, Ltd. | Method and system for storing and retrieving data |
US20140351639A1 (en) * | 2013-05-22 | 2014-11-27 | Telefonaktiebolaget L M Ericsson (Publ) | Recovery of operational state values for complex event processing based on a time window defined by an event query |
CN105224546A (zh) * | 2014-06-04 | 2016-01-06 | 阿里巴巴集团控股有限公司 | 数据存储和查询方法及设备 |
US20160092484A1 (en) * | 2014-09-26 | 2016-03-31 | International Business Machines Corporation | Data ingestion stager for time series database |
CN105528367A (zh) * | 2014-09-30 | 2016-04-27 | 华东师范大学 | 基于开源大数据对时间敏感数据的存储和近实时查询方法 |
CN106649403A (zh) * | 2015-11-04 | 2017-05-10 | 深圳市腾讯计算机系统有限公司 | 文件存储中的索引实现方法和系统 |
CN106919675A (zh) * | 2017-02-24 | 2017-07-04 | 浙江大华技术股份有限公司 | 一种数据存储方法及装置 |
US20170250889A1 (en) * | 2016-02-29 | 2017-08-31 | Airmagnet, Inc. | Fast packet retrieval based on flow id and metadata |
CN107391770A (zh) * | 2017-09-13 | 2017-11-24 | 北京锐安科技有限公司 | 一种处理数据的方法、装置、设备以及存储介质 |
CN108287668A (zh) * | 2018-01-25 | 2018-07-17 | 深圳市智物联网络有限公司 | 设备数据的处理方法及装置、计算机装置及可读存储介质 |
-
2018
- 2018-11-09 CN CN201811330460.5A patent/CN111177077B/zh active Active
Patent Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080208904A1 (en) * | 2007-02-26 | 2008-08-28 | Friedlander Robert R | System and method for deriving a hierarchical event based database optimized for analysis of complex accidents |
US20130151797A1 (en) * | 2011-12-13 | 2013-06-13 | Ati Technologies Ulc | Method and apparatus for centralized timestamp processing |
US20130242326A1 (en) * | 2012-03-13 | 2013-09-19 | Ricoh Company, Ltd. | Method and system for storing and retrieving data |
US20140351639A1 (en) * | 2013-05-22 | 2014-11-27 | Telefonaktiebolaget L M Ericsson (Publ) | Recovery of operational state values for complex event processing based on a time window defined by an event query |
CN105224546A (zh) * | 2014-06-04 | 2016-01-06 | 阿里巴巴集团控股有限公司 | 数据存储和查询方法及设备 |
US20160092484A1 (en) * | 2014-09-26 | 2016-03-31 | International Business Machines Corporation | Data ingestion stager for time series database |
CN105528367A (zh) * | 2014-09-30 | 2016-04-27 | 华东师范大学 | 基于开源大数据对时间敏感数据的存储和近实时查询方法 |
CN106649403A (zh) * | 2015-11-04 | 2017-05-10 | 深圳市腾讯计算机系统有限公司 | 文件存储中的索引实现方法和系统 |
US20170250889A1 (en) * | 2016-02-29 | 2017-08-31 | Airmagnet, Inc. | Fast packet retrieval based on flow id and metadata |
CN106919675A (zh) * | 2017-02-24 | 2017-07-04 | 浙江大华技术股份有限公司 | 一种数据存储方法及装置 |
CN107391770A (zh) * | 2017-09-13 | 2017-11-24 | 北京锐安科技有限公司 | 一种处理数据的方法、装置、设备以及存储介质 |
CN108287668A (zh) * | 2018-01-25 | 2018-07-17 | 深圳市智物联网络有限公司 | 设备数据的处理方法及装置、计算机装置及可读存储介质 |
Non-Patent Citations (2)
Title |
---|
方金云;刘羽;姚晓;陈翠婷;张梦菲;肖茁建;张广发;: "基于Spark的空间数据实时访存技术的研究", 地理信息世界 * |
郑晓东;王梅;陈德华;张碧莹;: "一种基于Spark的分布式时态索引方法", 计算机应用与软件 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112000619A (zh) * | 2020-08-21 | 2020-11-27 | 杭州安恒信息技术股份有限公司 | 一种时间顺序数据存储方法、装置、设备及可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN111177077B (zh) | 2023-05-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10360193B2 (en) | Method and apparatus for smart archiving and analytics | |
US10204147B2 (en) | System for capture, analysis and storage of time series data from sensors with heterogeneous report interval profiles | |
JP2019511054A (ja) | 分散クラスタ型訓練方法及び装置 | |
CN107026881B (zh) | 业务数据的处理方法、装置及系统 | |
US11657025B2 (en) | Parallel processing of filtered transaction logs | |
CN111090705B (zh) | 一种多维数据处理方法、装置及设备、存储介质 | |
CN109144791A (zh) | 数据转存方法、装置和数据管理服务器 | |
CN107959695B (zh) | 一种数据传输方法及装置 | |
US11210211B2 (en) | Key data store garbage collection and multipart object management | |
CN108932286B (zh) | 一种数据查询方法及装置 | |
CN111061758B (zh) | 数据存储方法、装置及存储介质 | |
CN110232074A (zh) | 流数据与维表关联方法及流计算装置 | |
CN109885577A (zh) | 数据处理方法、装置、终端及存储介质 | |
CN111177201A (zh) | 一种数据流处理的方法以及相关装置 | |
CN110858210B (zh) | 数据查询方法及装置 | |
CN109947729A (zh) | 一种实时数据分析方法及装置 | |
CN107491458B (zh) | 一种存储时间序列数据的方法和装置以及系统 | |
CN111258978A (zh) | 一种数据存储的方法 | |
TWI677210B (zh) | 一種企業物件的資訊加載方法和裝置 | |
CN110535943B (zh) | 数据处理方法、装置、电子设备及存储介质 | |
WO2016101758A1 (zh) | 一种跨集群的数据同步方法和装置 | |
US11080239B2 (en) | Key value store using generation markers | |
CN109189724B (zh) | 提高视频监控系统音视频数据存储效率的方法及装置 | |
CN111177077B (zh) | 数据存储及数据查询方法、装置、设备、介质 | |
CN110088745B (zh) | 数据处理系统以及数据处理方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |