本发明实施例涉及数据处理的技术,尤其涉及一种处理数据的方法、装置、设备及存储介质。
背景技术:
sparkstreaming是一个流式数据处理引擎,它对外提供基于microbatch处理机制处理数据。再对时间窗口内的数据进行各种运算,产生结果数据,sparkstreaming提供关联join机制也是基于事件窗口内的数据进行计算,但是基于增量数据与全量数据的关联无法解决。
目前业界的普遍解决方法是普遍依赖外部存储,或者redis或者其他传统数据库,使用redis等nosql数据库这种算法普遍影响计算低延迟性和处理效率低下,而使用传统数据库则在超大数据量下无法满足时效性,以上诸种方法均需增加组件或者设备,以及相关设备和组件的维护工作。
技术实现要素:
本发明实施例提供一种处理数据的方法、装置、设备及存储介质,旨在解决如何利用现有sparkstreaming处理能力,实现流上的数据之间进行关联。
第一方面,一种处理数据的方法,所述方法包括:
配置关联规则,并将规则文件上传到预设存储介质上;
获取缓存数据集,并根据分区规则对所述缓存数据集进行分区;
获取关联数据集,并根据所述关联规则对所述关联数据集进行关联。
可选地,所述根据分区规则对所述缓存数据集进行分区,包括:
根据所述关联规则判断所述缓存数据集是否是缓存数据;
若所述缓存数据集是缓存数据,则将所述缓存数据集加入到全量数据集中。
可选地,所述将所述缓存数据集加入到全量数据集中之后,还包括:
在加入时判断是否有重复数据;
若有重复数据时,则更新所述全量数据集中对应的数据,同时依据配置的关联字段对所述缓存数据集创建布隆过滤。
可选地,所述根据所述关联规则对所述关联数据集进行关联,包括:
根据所述关联规则判断所述缓存数据集是否是关联数据;
若所述缓存数据集是关联数据,则查找所述关联数据对应字段的布隆过滤;
若找到所述关联数据对应字段的布隆过滤,则去除所述关联数据对应字段下的数据,再进行数据复制关联。
可选地,所述方法还包括:
监听目录,并将所述关联规则加载到内存中,生成关联规则rdd。
可选地,所述方法还包括:
通过所述缓存数据集和所述关联数据集上的id字段时间戳,记录数据生产时间;再截取所述生产时间判断存储周期,并判断是否老化数据。
可选地,所述方法还包括:
控制缓存内容的大小;
当所述缓存的数据集内容的大小超过预设阀值,则将缓存的数据写入磁盘中的生成parquet文件,在内存上建立key、parquet文件名及parquet中columnchunk的offset三个字段的内存索引,其中,所述key来自于配置的关联字段;
若判断关联数据集的字段与缓存的key满足关联条件时,则从所述parquet文件上读取对应的数据记录。
第二方面,一种处理数据的装置,所述装置包括:
配置模块,用于配置关联规则,并将规则文件上传到预设存储介质上;
分区模块,用于获取缓存数据集,并根据分区规则对所述缓存数据集进行分区;
关联模块,用于获取关联数据集,并根据所述关联规则对所述关联数据集进行关联;
其中,所述分区模块,具体用于:
根据所述关联规则判断所述缓存数据集是否是缓存数据;
若所述缓存数据集是缓存数据,则将所述缓存数据集加入到全量数据集中;
其中,所述装置还包括:
更新模块,用于在将所述缓存数据集加入到全量数据集中之后,在加入时判断是否有重复数据;若有重复数据时,则更新所述全量数据集中对应的数据,同时依据配置的关联字段对所述缓存数据集创建布隆过滤;
其中,所述关联模块,具体用于:
根据所述关联规则判断所述缓存数据集是否是关联数据;
若所述缓存数据集是关联数据,则查找所述关联数据对应字段的布隆过滤;
若找到所述关联数据对应字段的布隆过滤,则去除所述关联数据对应字段下的数据,再进行数据复制关联;
其中,所述装置还包括:
生成模块,用于监听目录,并将所述关联规则加载到内存中,生成关联规则rdd;
其中,所述装置还包括:
判断模块,用于通过所述缓存数据集和所述关联数据集上的id字段时间戳,记录数据生产时间;再截取所述生产时间判断存储周期,并判断是否老化数据;
其中,所述装置还包括:
读取模块,用于控制缓存内容的大小;
当所述缓存的数据集内容的大小超过预设阀值,则将缓存的数据写入磁盘中的生成parquet文件,在内存上建立key、parquet文件名及parquet中columnchunk的offset三个字段的内存索引,其中,所述key来自于配置的关联字段;
若判断关联数据集的字段与缓存的key满足关联条件时,则从所述parquet文件上读取对应的数据记录。
第三方面,一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如上述的方法。
第四方面,一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如上述的方法。
本发明实施例中,配置关联规则,并将规则文件上传到预设存储介质上;获取缓存数据集,并根据分区规则对所述缓存数据集进行分区;获取关联数据集,并根据所述关联规则对所述关联数据集进行关联。本发明实现了流式的实时关联计算能力。使用分区算法将数据分散在不同的节点上,降低各节点内存压力,使用布隆过滤来实现字段值关联判断,本地节点进行匹配运算,省去网络传输时间;通过关联规则配置及发布,sparkstreaming监听关联规则发布目录,sparkstreaming启动时将此规则先加载进入内存。而当规则发生变化时,重新载入内存,规则生效;通过缓存数据集与关联数据集对应的字段进行关联计算;通过布隆过滤算法判断字段的key是否存在,是进行关联,复制被关联的数据到关联数据集中;通过配置规则将存储在内存中的数据集进行内存大小控制及持久化操作。
附图说明
图1为本发明实施例一提供的一种处理数据的方法的流程图;
图2为本发明实施例一提供的另一种处理数据的方法的流程图;
图3是本发明实施例二提供的一种处理数据的装置的功能模块示意图;
图4是本发明实施例三提供的一种处理数据的设备的功能模块示意图。
具体实施方式
下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。
实施例一
图1为本发明实施例一提供的一种处理数据的方法的流程图,本实施例可适用于通过配置客户端来进行处理数据的情况,该方法可以由一种处理数据的装置来执行,该装置可以采用软件和/或硬件的方式实现,一般集成于客户端中。
本发明实施例一的方法具体包括:
步骤110,配置关联规则,并将规则文件上传到预设存储介质上;
其中,所述根据分区规则对所述缓存数据集进行分区,包括:
根据所述关联规则判断所述缓存数据集是否是缓存数据;
若所述缓存数据集是缓存数据,则将所述缓存数据集加入到全量数据集中。
可选地,所述将所述缓存数据集加入到全量数据集中之后,还包括:
在加入时判断是否有重复数据;
若有重复数据时,则更新所述全量数据集中对应的数据,同时依据配置的关联字段对所述缓存数据集创建布隆过滤。
步骤120,获取缓存数据集,并根据分区规则对所述缓存数据集进行分区;
步骤130,获取关联数据集,并根据所述关联规则对所述关联数据集进行关联。
其中,所述根据所述关联规则对所述关联数据集进行关联,包括:
根据所述关联规则判断所述缓存数据集是否是关联数据;
若所述缓存数据集是关联数据,则查找所述关联数据对应字段的布隆过滤;
若找到所述关联数据对应字段的布隆过滤,则去除所述关联数据对应字段下的数据,再进行数据复制关联。
可选地,所述方法还包括:
监听目录,并将所述关联规则加载到内存中,生成关联规则rdd。
可选地,所述方法还包括:
通过所述缓存数据集和所述关联数据集上的id字段时间戳,记录数据生产时间;再截取所述生产时间判断存储周期,并判断是否老化数据。
可选地,所述方法还包括:
控制缓存内容的大小;
当所述缓存的数据集内容的大小超过预设阀值,则将缓存的数据写入磁盘中的生成parquet文件,在内存上建立key、parquet文件名及parquet中columnchunk的offset三个字段的内存索引,其中,所述key来自于配置的关联字段;
若判断关联数据集的字段与缓存的key满足关联条件时,则从所述parquet文件上读取对应的数据记录。
示例性的,关联规则配置及规则加载。关联规则配置完成之后,会将规则文件上传到hdfs上,而sparkstreaming监听此目录,启动之后将关联规则加载到内存中,生成关联规则rdd。
sparkstreaming读取缓存数据集时,依据分区规则,对数据进行分区,然后对读取到的数据依据规则判断是否是缓存数据,如果是,将此数据加入到全量数据集中,加入时对增量数据进行判断有重复数据,重复时更新全量数据中对应的数据,同时依据配置的关联字段对这批次数据创建布隆过滤。
sparkstreaming读取关联数据集,然后逐条对的数据依据规则判断是否是关联数据集,是关联数据集,则查找对应的字段的布隆过滤。如果找到,去对应的字段key下的数据,然后进行数据复制关联。
缓存控制及策略,缓存老化逻辑:通过数据集上的id字段时间戳记录数据生产时间,然后截取此时间判断存储周期,判断是否老化数据。
缓存持久化逻辑:获取缓存内容大小,当超过设定的阀值,则将数据持久化parquet文件,此时内存建立key,parquet文件名及parquet中columnchunk的offset映射关系。判断字段满足关联条件时从parquet读取此条记录。
本发明实施例提供配置关联规则,并将规则文件上传到预设存储介质上;获取缓存数据集,并根据分区规则对所述缓存数据集进行分区;获取关联数据集,并根据所述关联规则对所述关联数据集进行关联。本发明实现了流式的实时关联计算能力。使用分区算法将数据分散在不同的节点上,降低各节点内存压力,使用布隆过滤来实现字段值关联判断,本地节点进行匹配运算,省去网络传输时间;通过关联规则配置及发布,sparkstreaming监听关联规则发布目录,sparkstreaming启动时将此规则先加载进入内存。而当规则发生变化时,重新载入内存,规则生效;通过缓存数据集与关联数据集对应的字段进行关联计算;通过布隆过滤算法判断字段的key是否存在,是进行关联,复制被关联的数据到关联数据集中;通过配置规则将存储在内存中的数据集进行内存大小控制及持久化操作。
实施例二
如图3所示,装置包括:配置模块310、分区模块320和关联模块330。
配置模块310,用于配置关联规则,并将规则文件上传到预设存储介质上;
分区模块320,用于获取缓存数据集,并根据分区规则对所述缓存数据集进行分区;
关联模块330,用于获取关联数据集,并根据所述关联规则对所述关联数据集进行关联;
其中,所述分区模块310,具体用于:
根据所述关联规则判断所述缓存数据集是否是缓存数据;
若所述缓存数据集是缓存数据,则将所述缓存数据集加入到全量数据集中;
其中,所述装置还包括:
更新模块,用于在将所述缓存数据集加入到全量数据集中之后,在加入时判断是否有重复数据;若有重复数据时,则更新所述全量数据集中对应的数据,同时依据配置的关联字段对所述缓存数据集创建布隆过滤;
其中,所述关联模块320,具体用于:
根据所述关联规则判断所述缓存数据集是否是关联数据;
若所述缓存数据集是关联数据,则查找所述关联数据对应字段的布隆过滤;
若找到所述关联数据对应字段的布隆过滤,则去除所述关联数据对应字段下的数据,再进行数据复制关联;
其中,所述装置还包括:
生成模块,用于监听目录,并将所述关联规则加载到内存中,生成关联规则rdd;
其中,所述装置还包括:
判断模块,用于通过所述缓存数据集和所述关联数据集上的id字段时间戳,记录数据生产时间;再截取所述生产时间判断存储周期,并判断是否老化数据;
其中,所述装置还包括:
读取模块,用于控制缓存内容的大小;
当所述缓存的数据集内容的大小超过预设阀值,则将缓存的数据写入磁盘中的生成parquet文件,在内存上建立key、parquet文件名及parquet中columnchunk的offset三个字段的内存索引,其中,所述key来自于配置的关联字段;
若判断关联数据集的字段与缓存的key满足关联条件时,则从所述parquet文件上读取对应的数据记录。
实施例三
参考图4所示,该设备包括处理器401、存储器402、输入装置403以及输出装置404;设备中处理器401的数量可以是一个或多个,图4中以一个处理器401为例;设备中的处理器401、存储器402、输入装置403以及输出装置404可以通过总线或其他方式连接,图4中以通过总线连接为例。
存储器402作为一种计算机可读存储介质,可用于存储软件程序、计算机可执行程序以及模块,如本发明实施例中的请求的处理数据方法对应的程序指令/模块(例如,请求的处理数据装置中的客户端请求获取模块401、关键路由信息获取模块402以及路由转发信息构造模块403)。处理器401通过运行存储在存储器402中的软件程序、指令以及模块,从而执行设备的各种功能应用以及数据处理,即实现上述的请求的处理数据方法。
存储器402可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序;存储数据区可存储根据终端的使用所创建的数据等。此外,存储器402可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实例中,存储器402可进一步包括相对于处理器401远程设置的存储器,这些远程存储器可以通过网络连接至设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
输入装置403可用于接收输入的数字或字符信息,以及产生与设备的用户设置以及功能控制有关的键信号输入。
输出装置404可包括显示屏等显示设备。
实施例四
本发明实施例四还提供一种包含计算机可执行指令的存储介质,所述计算机可执行指令在由计算机处理器执行时用于执行一种请求的处理数据方法,该方法包括:
配置关联规则,并将规则文件上传到预设存储介质上;
获取缓存数据集,并根据分区规则对所述缓存数据集进行分区;
获取关联数据集,并根据所述关联规则对所述关联数据集进行关联。
当然,本发明实施例所提供的一种包含计算机可执行指令的存储介质,其计算机可执行指令不限于如上所述的方法操作,还可以执行本发明任意实施例所提供的请求的处理数据方法中的相关操作。
通过以上关于实施方式的描述,所属领域的技术人员可以清楚地了解到,本发明可借助软件及必需的通用硬件来实现,当然也可以通过硬件实现,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如计算机的软盘、只读存储器(read-onlymemory,简称rom)、随机存取存储器(randomaccessmemory,简称ram)、闪存(flash)、硬盘或光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
值得注意的是,上述请求的处理数据装置的实施例中,所包括的各个单元和模块只是按照功能逻辑进行划分的,但并不局限于上述的划分,只要能够实现相应的功能即可;另外,各功能单元的具体名称也只是为了便于相互区分,并不用于限制本发明的保护范围。
注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。