一种数据存储方法及装置与流程

文档序号:12802658阅读:170来源:国知局
一种数据存储方法及装置与流程

本发明属于数据处理技术领域,尤其涉及一种数据存储方法及装置。



背景技术:

随着科技的进步,视频采集设备使用频率也越来越高,在道路管理系统中,通过每个卡口安装的视频采集设备来采集车辆的信息,实现对该卡口车辆的监控,给道路管理带来了很大的便利。然而,随着城市化进程的加速,经济的飞速发展,汽车的数量呈现出爆炸式增长,安装在每个卡口的视频采集设备每天采集到的车辆的信息从几百万条上升到了几千万条,甚至上亿条,数据量飞速增长,在数据查询时面临着较大的压力。

现有技术中,数据在弹性搜索(elasticsearch)中存储时是针对每条数据的全文建立索引,每条数据的所有字段的信息全部包含在一张表中,能满足实时检索(单表查询),即对单条数据进行查询的需求,但是完全无法满足实时分析(多表关联查询)的需求。数据在列式文件(parquet)中存储时,parquet中采用列式存储结构,列式存储结构是将不同数据中对应相同字段的数据进行聚合存储,即针对每条数据中对应的不同字段分别存储在对应该字段的表中,虽然这种存储方法能满足实时分析的需求,但是实时检索时的效率并不高,需要进行全表扫描进行筛选。在数据存储时为了满足对实时检索和实时分析的需求,elasticsearch中和parquet中已经保存了供实时检索和实时分析的数据,但接收到新的待存储的数据,如何将该数据同时更新到elasticsearch中和parquet中,成为一个亟待解决的问题。



技术实现要素:

本发明提供一种数据存储方法及装置,用以实现将数据同时更新到elasticsearch中和parquet中。

本发明实施例公开了一种数据存储方法,所述方法包括:

根据接收到的待存储的数据,在所述数据中查找预设的第一字段,将所述数据存储到弹性搜索elasticsearch中,并根据所述预设的第一字段在elasticsearch中针对所述数据建立索引并保存;

根据接收到的所述待存储的数据,在所述数据中查找预设的第二字段,将所述数据存储到列式文件parquet中,并在所述parquet的各目录信息中查找所述第二字段对应的目标目录,在所述目标目录下建立所述数据的索引并保存,所述第一字段和第二字段不同或部分相同。

进一步地,所述将所述数据存储到parquet中包括:

将所述数据缓存到分布式计算框架spark的弹性分布式数据集rdd中;

判断所述rdd中缓存的数据是否满足写入条件,如果是,将rdd中缓存的数据写入到parquet中。

进一步地,所述判断所述rdd中缓存的数据是否满足写入条件包括以下至少一种:

判断所述rdd中缓存的数据的数据量是否达到设定的容量阈值;和

判断当前是否为数据写入的时间点;和

判断所述spark的资源使用率是否小于设定阈值。

进一步地,所述方法还包括:

接收数据备份请求,将parquet中存储的数据备份到其他存储空间。

进一步地,当将数据写入parquet中时采用rdd时,所述将parquet中存储的数据备份到其他存储空间包括:

将rdd中缓存的数据写入parquet中,之后将parquet中存储的数据备份到其他存储空间。

进一步地,所述方法还包括:

接收数据还原请求;

针对所述其他存储空间中备份的每条备份数据,在所述备份数据中查找预设的第二字段,将所述备份数据存储到parquet中,并在所述parquet的各目录信息中查找所述第二字段对应的目标目录,在所述目标目录下建立所述数据的索引并保存;在所述备份数据中查找预设的第一字段,将所述备份数据存储到elasticsearch中,并根据所述预设的第一字段在elasticsearch中针对所述备份数据建立索引并保存。

进一步地,所述根据所述预设的第一字段在elasticsearch中针对所述数据建立索引并保存包括:

在elasticsearch中针对所述数据的所述第一字段建立倒排索引,并保存所述倒排索引。

本发明实施例公开了一种数据存储装置,所述装置包括:

第一存储模块,用于根据接收到的待存储的数据,在所述数据中查找预设的第一字段,将所述数据存储到弹性搜索elasticsearch中,并根据所述预设的第一字段在elasticsearch中针对所述数据建立索引并保存;

第二存储模块,用于根据接收到的所述待存储的数据,在所述数据中查找预设的第二字段,将所述数据存储到列式文件parquet中,并在所述parquet的各目录信息中查找所述第二字段对应的目标目录,在所述目标目录下建立所述数据的索引并保存,所述第一字段和第二字段不同或部分相同。

进一步地,所述第二存储模块,具体用于将所述数据缓存到分布式计算框架spark的弹性分布式数据集rdd中;判断所述rdd中缓存的数据是否满足写入条件,如果是,将rdd中缓存的数据写入到parquet中。

进一步地,所述第二存储模块,具体用于采用以下至少一种方式判断所述rdd中缓存的数据是否满足写入条件:判断所述rdd中缓存的数据的数据量是否达到设定的容量阈值;和判断当前是否为数据写入的时间点;和判断所述spark的资源使用率是否小于设定阈值。

进一步地,所述装置还包括:

备份模块,用于接收数据备份请求,将parquet中存储的数据备份到其他存储空间。

进一步地,所述备份模块,具体用于当将数据写入parquet中时采用rdd时,将rdd中缓存的数据写入parquet中,之后将parquet中存储的数据备份到其他存储空间。

进一步地,所述装置还包括:

还原模块,用于接收数据还原请求;针对所述其他存储空间中备份的每条备份数据,在所述备份数据中查找预设的第二字段,将所述备份数据存储到parquet中,并在所述parquet的各目录信息中查找所述第二字段对应的目标目录,在所述目标目录下建立所述数据的索引并保存;在所述备份数据中查找预设的第一字段,将所述备份数据存储到elasticsearch中,并根据所述预设的第一字段在elasticsearch中针对所述备份数据建立索引并保存。

进一步地,所述第一存储模块,具体用于在elasticsearch中针对所述数据的所述第一字段建立倒排索引,并保存所述倒排索引。

本发明实施例提供了一种数据存储方法及装置,所述方法包括:根据接收到的待存储的数据,在所述数据中查找预设的第一字段,将所述数据存储到弹性搜索elasticsearch中,并根据所述预设的第一字段在elasticsearch中针对所述数据建立索引并保存;根据接收到的所述待存储的数据,在所述数据中查找预设的第二字段,将所述数据存储到列式文件parquet中,并在所述parquet的各目录信息中查找所述第二字段对应的目标目录,在所述目标目录下建立所述数据的索引并保存,所述第一字段和第二字段不同或部分相同。由于在本发明实施例中,当接收到待存储的数据时,获取所述数据中的预设的第一字段,根据预设的第一字段在elasticsearch中建立所述数据的索引并保存,并在所述数据中获取预设的第二字段,目标目录下建立数据的索引并保存,从而实现了elasticsearch和parquet中的数据同步更新。

附图说明

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

图1为本发明实施例1提供的一种数据存储过程示意图;

图2为本发明实施例1提供的一种目录示意图;

图3为本发明实施例2提供的一种数据查询过程示意图;

图4为本发明实施例2提供的一种parquet中查询结果输出示意图;

图5为本发明实施例2提供的一种parquet中查询结果输出示意图;

图6为本发明实施例3提供的一种数据存储过程示意图;

图7为本发明实施例4提供的一种数据备份过程示意图;

图8为本发明实施例4提供的一种数据查询过程示意图;

图9为本发明实施例5提供的一种数据存储及查询结构示意图;

图10为本发明实施例6提供的一种数据存储装置结构示意图。

具体实施方式

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

实施例1:

图1为本发明实施例提供的一种数据存储过程示意图,该过程包括:

s101:根据接收到的待存储的数据,在所述数据中查找预设的第一字段,将所述数据存储到elasticsearch中,并根据所述预设的第一字段在elasticsearch中针对所述数据建立索引并保存。

在本发明实施例中,接收到的待存储的数据可以是外部数据源发送的数据,所述外部数据源包括:关系型数据库(mysql)、甲骨文数据库(oracle)、高吞吐量的分布式发布订阅消息系统(kafka)、高可用的,高可靠的,分布式的海量日志采集、聚合和传输的系统(flume)、推特数据库(twitter),等发送的数据。

所述数据可以是卡口采集到的通过该卡口的车辆的数据,其中,数据中包括该车辆的标识信息、速度的信息、对应卡口号的信息、采集时间的信息等。

elasticsearch是一种一个分布式多用户能力的全文搜索引擎,在数据存储时针对的是数据的全文,在根据用户的输入的查询内容进行查询时,输出的是对应所述查询内容的数据的全文,也就是说输出的是满足该查询内容的每条数据。

在本发明实施例中,在所述数据中查找预设的第一字段的信息,所述第一字段可以为该数据中记录时间的字段、该数据中记录来源的字段、该数据中记录标识信息的字段、该数据中记录速度的字段中的一种或者多种。具体的,接收到待存储的数据,在所述待存储的数据中查找预设的第一字段,将所述数据存储到elasticsearch中,并根据所述预设的第一字段在elasticsearch中针对所述数据建立索引并保存。用户在对所述数据进行实时检索时,便可以根据所述数据第一字段对应的内容,对所述数据进行查询。

例如:接收到的待存储数据为:浙aa1899|60|214711$1$1$0|2016-12-16-17:35,其中,所述数据中浙aa1899为该数据中记录标识信息的字段、60为该数据记录速度的字段、214711$1$1$0为该数据中记录来源的字段、2016-12-16-17:35为该数据记录时间的字段,如果预设的第一字段包括:记录标识信息的字段、记录速度的字段和记录来源的字段时,则根据该数据中记录标识信息的字段、记录速度的字段、记录来源的字段对应的浙aa1899、60、214711$1$1$0,在elasticsearch中建立所述浙aa1899、60、214711$1$1$0到所述数据的索引,即将浙aa1899、60、214711$1$1$0作为该数据浙aa1899|60|214711$1$1$0|2016-12-16-17:35的索引信息,如果用户在进行实时检索时,输入查询内容为浙aa1899,则在索引信息中进行查找,将数据浙aa1899|60|214711$1$1$0|2016-12-16-17:35返回给用户。

s102:根据接收到的所述待存储的数据,在所述数据中查找预设的第二字段,将所述数据存储到parquet中,并在所述parquet的各目录信息中查找所述第二字段对应的目标目录,在所述目标目录下建立所述数据的索引并保存,所述第一字段和第二字段不同或部分相同。

在本发明实施例中,将接收到的待存储的数据存储到elasticsearch中的同时,也将所述接收到的待存储的数据存储到parquet中。

具体的,根据接收到的所述待存储的数据,在所述数据中查找预设的第二字段的信息,将所述数据存储到parquet中,并在所述parquet的各目录信息中查找所述第二字段对应的目标目录,在所述目标目录下建立所述数据的索引并保存,所述第二字段可以是记录时间的字段,也可以是记录来源的字段,也可以是记录速度的字段,还可以是记录时间的字段和记录来源的字段等,所述第二字段可以与所述第一字段不同也可以部分相同。

例如:所述第二字段为记录时间的字段和记录来源的字段,parquet根据数据的对应的时间范围及来源创建目录,在接收到所述待存储的数据后,在所述数据中查找该数据中记录时间的字段和记录来源的字段,根据所述数据中记录时间的字段和记录来源的字段,在所述parquet的各目录信息中查找所述数据中对应的时间和来源对应的目标目录,例如:数据中对应时间的字段和对应来源的字段对应的时间为2016-01-01-13:35、对应的来源为卡口1,根据时间范围及来源创建有目录2016-01-01/卡口1、2016-01-01/卡口2、2016-01-02/卡口1、2016-01-02/卡口2,确定2016-01-01/卡口1为目标目录。在所述目标目录下建立所述数据的索引并保存。用户在进行实时分析时,可以根据需要分析时间和来源的信息确定对应的目录,输出对应目录下的每条数据。在本发明实施例中,在所述数据中查找预设的第二字段并在parquet与所述第二字段对应的目标目录下建立所述数据的索引是现有技术,不再进行赘述。

图2为本发明实施例提供的一种目录示意图,根据每条数据对应的时间和来源在对应时间范围和来源的目录下建立有该数据对应的索引,例如:接收到的待存储数据为:浙aa1899|60|214711$1$1$0|2016-12-16-17:35,其中,所述数据中214711$1$1$0为该数据中记录来源的字段,其中214711$1$1$0为卡口1对应的标识信息、2016-12-16-17:35为该数据记录时间的字段,该数据对应的时间范围为2016-01-01、来源为卡口1,对应的目标目录为2016-01-01/卡口1,在该目录下建立有到数据浙aa1899|60|214711$1$1$0|2016-12-16-17:35的索引,即将2016-01-01/卡口1作为该数据aa1899|60|214711$1$1$0|2016-12-16-17:35的索引信息。用户需要分析2016-01-01至2016-01-30在卡口1抓拍的车辆过车记录时,将2016-01-01至2016-01-30下的卡口1目录下对应的每条数据返回给用户。

另外,因为parquet中采用列式存储结构,列式存储结构是将不同数据中对应相同字段的数据进行聚合存储,即针对每条数据中对应的不同字段分别存储在对应该字段的表中。例如:数据浙aa1899|60|214711$1$1$0|2016-12-16-17:35中60对应的为记录速度的字段,将数据对应的速度存储在对应速度的速度表中。用户在对数据进行实时分析时,可以通过选择特定的表或字段,在数据输出时只输出该数据对应表或字段中存储的数据,当然也可以对特定字段的设定筛选条件,选择对应字段的表进行查询,输出满足筛选条件的每条数据。

相对于elasticsearch中进行实时检索时,根据保存的第一字段的索引信息进行查询,在parquet中进行实时分析,根据保存的目录的信息或第二字段的信息进行查询,输出对应目录下或者满足第二字段筛选条件的每条数据,当然也可以是对特定目录下的每条数据通过第二字段对应的筛选条件进行筛选,输出特定目录下满足第二字段对应的筛选条件的每条数据,满足用户对数据分析的需求需要。

由于在本发明实施例中,当接收到待存储的数据时,获取所述数据中的预设的第一字段,根据预设的第一字段在elasticsearch中建立所述数据的索引并保存,并在所述数据中获取预设的第二字段,目标目录下建立数据的索引并保存,从而实现了elasticsearch和parquet中的数据同步更新。

实施例2:

图3为本发明实施例提供的一种数据查询过程示意图,用户根据自身需要进行实时检索或实时分析时,如果用户需要进行实时检索则输入与第一字段对应的查询内容,如果用户需要进行实时分析,则输入需要分析的字段信息和/或对该字段对应的筛选条件,其中所述字段的信息也可以是需要分析的字段对应表的信息,例如:可以是速度字段的信息也可以是速度字段对应的速度表的信息。用户下达结构化查询语言(structuredquerylanguage,sql)请求,接收到用户的sql请求,解析sql请求的合法性,即判断对用户下达的sql请求是否为查询请求或者分析请求等正确的请求,将合法的sql请求转化为具体的查询计划,判断所述sql请求中是否包含需要分析的字段的信息,如果否,则说明需要进行实时检索,在elasticsearch中进行查询,如果是,则说明需要进行实时分析,在parquet中进行查询。如果sql中的请求对应实时分析时,如图4、图5所示,为本发明实施例提供的一种parquet中查询结果输出示意图,其中sql请求中包含选择(select)、输出字段车牌号(car_num)、车速(car_speed)、信道(fromc_picrecord)及筛选条件车速大于等于60小于等于80的信息(wherecarspeed>=60andcar_speed<=80),执行sql请求,输出每条数据中对应car_num、car_speed、fromc_picrecord字段的信息,并根据筛选条件wherecarspeed>=60andcar_speed<=80输出满足筛选条件的对应数据。

实施例3:

为了减轻数据存储压制,防止数据丢失,在上述各实施例的基础上,在本发明实施例中,所述将所述数据存储到parquet中包括:

将所述数据缓存到分布式计算框架(spark)的弹性分布式数据集(resilientdistributeddatasets,rdd)中;

判断所述rdd中缓存的数据是否满足写入条件,如果是,将rdd中缓存的数据写入到parquet中。

具体的,如果持续的、不间断的在parquet中写入数据,会造成parquet所在的硬件存储介质持续工作,带来较大的工作压力造成硬件存储介质的损耗,并且如果瞬时需要存储的数据量过大,因为数据写入的最大速度是一定的,可能会造成一部分数据无法写入,导致数据丢失。为了避免数据丢失及硬件的损耗,在本发明实施例中,接收到的待存储数据,将所述数据缓存到rdd中,当rdd中缓存的数据满足写入条件时,将rdd中缓存的数据写入到parquet中。

所述判断所述rdd中缓存的数据是否满足写入条件包括以下至少一种:

判断所述rdd中缓存的数据的数据量是否达到设定的容量阈值;

判断当前是否为数据写入的时间点;

判断所述spark的资源使用率是否小于设定阈值。

具体的,可以针对rdd中缓存的数据的数据量设定容量阈值,该设定的容量阈值可以为rdd中最大缓存数据量的80%或90%等,如果所述rdd中缓存的数据的数据量达到设定的容量阈值,将rdd中缓存的数据写入到parquet中;也可以设定一定的数据写入时间点,当达到设定的时间点,将rdd中缓存的数据写入到parquet中,例如:可以将每隔5分钟的时间点作为数据写入时间点,如果8:45为其中一个数据写入时间点,如果当前时刻到达8:45,将rdd中缓存的数据写入到parquet中;还可以是当所述spark的资源使用率小于设定阈值,将rdd中缓存的数据写入到parquet中,将rdd中缓存的数据写入到parquet中会消耗spark的资源,而spark的资源总量是一定的,当所述spark的资源使用率小于设定阈值,将rdd中缓存的数据写入到parquet中,即保证了spark能提供充足的资源,用于将rdd中缓存的数据写入到parquet中,又避免了在spark的资源使用较高的时候占用spark的资源,提高了spark的性能。在实际工作过程中,用户可以根据自身的需求,选择所述写入条件中的一种或多种作为判断所述rdd中缓存的数据的写入条件,也可以根据自身的需要调整不同的写入条件。

图6为本发明实施例提供的一种数据存储过程示意图,该过程包括:

s601:接收外部数据源发送的数据。

s602:将所述数据写入到elasticsearch中。

s603:将所述数据缓存到spark的rdd中。

s604:判断所述rdd中缓存的数据是否满足写入条件,如果是,进行s605,如果否,返回s604。

s605:将rdd中缓存的数据写入到parquet中。

图7为本发明实施例提供的一种数据查询过程示意图,用户根据自身需要进行实时检索或实时分析时,如果用户需要进行实时检索则输入与第一字段对应的查询内容,如果用户需要进行实时分析,则输入需要分析的字段信息和/或对该字段对应的筛选条件,其中所述字段的信息也可以是需要分析的字段对应表的信息,例如:可以是速度字段的信息也可以是速度字段对应的速度表的信息。用户下达sql请求,接收到用户的sql请求,解析sql请求的合法性,即判断对用户下达的sql请求是否为查询请求或者分析请求等正确的请求,将合法的sql请求转化为具体的查询计划,判断所述sql请求中是否包含需要分析的字段的信息,如果否,则说明需要进行实时检索,在elasticsearch中进行查询,如果是,则说明需要进行实时分析,在parquet中进行查询,如果实时分析时,还包含对rdd中的数据进行查询,在rdd和parquet中进行查询。

实施例4:

为了保证数据的安全,提高备份效率,在上述各实施例的基础上,在本发明实施例中,所述方法还包括:

接收数据备份请求,将parquet中存储的数据备份到其他存储空间。

随着信息技术的飞速发展,数据量不断的增长,数据安全的重要性也日趋明显,大到自然灾害、小到病毒、电源故障和操作员意外的操作错误都可能导致数据的损毁,而数据备份是保证数据安全,用于数据恢复的最后一道防线。

在本发明实施例中,因为parquet中存储的数据包括elasticsearch中存储的全部数据,并且parquet中的数据采用列式存储结构,相比elasticsearch采用的针对每条数据进行全文存储的存储结构有着较高的压缩率。在相同数据量的情况下,parquet中采用列式存储结构占用的存储空间是elasticsearch采用的针对每条数据进行全文存储的存储结构占用的存储空间的1/5至1/10,在对数据进行备份时,能极大的减少对其他存储空间的占用量,并减少备份时所用的时间。

具体的,为了提高备份效率,如果接收到数据备份请求,将parquet中存储的数据备份到其他存储空间,所述其他存储空间可以是外部存储介质,例如移动硬盘、u盘等,也可以是自身设备中的其他存储空间,例如自身设备中用于备份的硬盘存储空间。

为了保证数据备份的完整性,在上述各实施例的基础上,在本发明实施中,当将数据写入parquet中时采用rdd时,所述将parquet中存储的数据备份到其他存储空间包括:

将rdd中缓存的数据写入parquet中,之后将parquet中存储的数据备份到其他存储空间。

具体的,当将数据写入parquet中时采用rdd时,接收到数据备份请求,将rdd中缓存的数据写入parquet中,之后将parquet中存储的数据备份到其他存储空间。

图8为本发明实施例提供的一种数据备份过程示意图,该过程包括:

s801:接收数据备份请求。

s802:将rdd中缓存的数据写入parquet中。

s803:将parquet中存储的数据备份到其他存储空间。

实施例5:

在上述各实施例的基础上,在本发明实施例中,为了保证数据的安全,所述方法还包括:

接收数据还原请求;

针对所述其他存储空间中备份的每条备份数据,在所述备份数据中查找预设的第二字段,将所述备份数据存储到parquet中,并在所述parquet的各目录信息中查找所述第二字段对应的目标目录,在所述目标目录下建立所述数据的索引并保存;在所述备份数据中查找预设的第一字段,将所述备份数据存储到elasticsearch中,并根据所述预设的第一字段在elasticsearch中针对所述备份数据建立索引并保存。

具体的,如果接收到数据还原请求,针对所述其他存储空间中备份的每条备份数据,将所述备份数据存储到parquet中,并在对该备份数据中查找预设的第二字段,并在所述parquet的各目录信息中查找所述第二字段对应的目标目录,在所述目标目录下建立所述数据的索引并保存,完成对parquet中的数据进行还原;针对还原到parquet中的每条备份数据在所述备份数据中查找预设的第一字段,将所述备份数据存储到elasticsearch中,并根据所述预设的第一字段在elasticsearch中针对所述备份数据建立索引并保存,完成对elasticsearch中数据的还原。

为了提高查询效率,所述根据所述预设的第一字段在elasticsearch中针对所述数据建立索引并保存包括:

在elasticsearch中针对所述数据的所述第一字段建立倒排索引,并保存所述倒排索引。

在本发明实施例中,在elasticsearch中针对所述数据的所述第一字段建立倒排索引是现有技术,在本发明实施例中不再进行赘述。

图9为本发明实施例提供的一种数据存储及查询结构示意图,数据库管理系统(databasemanagementsystem,dbms)中,应用程序sql接口用于用户生成sql请求,向sql解析层发送sql命令,sql解析层,用于接收应用程序的sql请求,解析sql语句,执行引擎层用于对底层数据进行加载加载,底层数据包含elastissearch、缓存rdd、parquet,数据加载驱动层用于接收外部数据,将外部数据加载至数据存储层中的elastissearch、缓存rdd、parquet中,备份还原管理层,用于对数据的备份和还原。

实施例6:

图10为本发明实施例提供的一种数据存储装置结构示意图,所述装置包括:

第一存储模块11,用于根据接收到的待存储的数据,在所述数据中查找预设的第一字段,将所述数据存储到弹性搜索elasticsearch中,并根据所述预设的第一字段在elasticsearch中针对所述数据建立索引并保存;

第二存储模块12,用于根据接收到的所述待存储的数据,在所述数据中查找预设的第二字段,将所述数据存储到列式文件parquet中,并在所述parquet的各目录信息中查找所述第二字段对应的目标目录,在所述目标目录下建立所述数据的索引并保存,所述第一字段和第二字段不同或部分相同。

所述第二存储模块12,具体用于将所述数据缓存到分布式计算框架spark的弹性分布式数据集rdd中;判断所述rdd中缓存的数据是否满足写入条件,如果是,将rdd中缓存的数据写入到parquet中。

所述第二存储模块12,具体用于采用以下至少一种方式判断所述rdd中缓存的数据是否满足写入条件:判断所述rdd中缓存的数据的数据量是否达到设定的容量阈值;和判断当前是否为数据写入的时间点;和判断所述spark的资源使用率是否小于设定阈值。

所述装置还包括:

备份模块13,用于接收数据备份请求,将parquet中存储的数据备份到其他存储空间。

所述备份模块13,具体用于当将数据写入parquet中时采用rdd时,将rdd中缓存的数据写入parquet中,之后将parquet中存储的数据备份到其他存储空间。

所述装置还包括:

还原模块14,用于接收数据还原请求;针对所述其他存储空间中备份的每条备份数据,在所述备份数据中查找预设的第二字段,将所述备份数据存储到parquet中,并在所述parquet的各目录信息中查找所述第二字段对应的目标目录,在所述目标目录下建立所述数据的索引并保存;在所述备份数据中查找预设的第一字段,将所述备份数据存储到elasticsearch中,并根据所述预设的第一字段在elasticsearch中针对所述备份数据建立索引并保存。

所述第一存储模块11,具体用于在elasticsearch中针对所述数据的所述第一字段建立倒排索引,并保存所述倒排索引。

本发明实施例公开了一种数据存储方法及装置,所述方法包括:根据接收到的待存储的数据,在所述数据中查找预设的第一字段,将所述数据存储到弹性搜索elasticsearch中,并根据所述预设的第一字段在elasticsearch中针对所述数据建立索引并保存;根据接收到的所述待存储的数据,在所述数据中查找预设的第二字段,将所述数据存储到parquet中,并在所述parquet的各目录信息中查找所述第二字段对应的目标目录,在所述目标目录下建立所述数据的索引并保存,所述第一字段和第二字段不同或部分相同。由于在本发明实施例中,当接收到待存储的数据时,获取所述数据中的预设的第一字段,根据预设的第一字段在elasticsearch中建立所述数据的索引并保存,并在所述数据中获取预设的第二字段,目标目录下建立数据的索引并保存,从而实现了elasticsearch和parquet中的数据同步更新。

对于系统/装置实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。

本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

尽管已描述了本申请的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请范围的所有变更和修改。

显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

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