一种数据合并方法及系统技术方案

技术编号:20160344 阅读:27 留言:0更新日期:2019-01-19 00:13
本申请公开了一种数据合并方法及系统,方法包括:对数据进行压缩处理,基于压缩后表的数据量大小设置分区个数,通过对增量数据层和全量数据层的主键哈希,按照分区个数取模,将增量数据和全量数据分别拆分到不同的临时目录,对增量数据层和全量数据层对应分区下的文件执行相应的合并操作,将合并操作结果输出到临时目录和全量数据目录。本申请在大数据的情景下,能够高效的实现数据的合并。

【技术实现步骤摘要】
一种数据合并方法及系统
本申请涉及数据处理
,尤其涉及一种数据合并方法及系统。
技术介绍
大数据应用下,尤其银行系统有些时点类的表(如储蓄表)量级很大(约数百G),每日增量数据也在数十G的量级,批量加工过程中,为了获取每日最新的全量数据,就需要将增量数据表和全量数据表做合并获取最新的全量数据。现有的数据合并基本都是基于oracle(关系数据库管理系统)等数据库的一种sql(StructuredQueryLanguage,结构化查询语言)语句,用来合并update语句和insert语句,但是大数据应用下,在HDFS(Hadoop分布式文件系统)集群上,基于hive(hive是基于Hadoop的一个数据仓库工具)存储如何进行数据合并,hive本身没有成熟的数据合并技术,目前采用的数据合并方法在数据量很大时效率又很低,成为批量加工的瓶颈。因此,实现在大数据的情景下对数据进行合并,且提高数据合并的效率,是一项亟待解决的问题。
技术实现思路
有鉴于此,本申请提供了一种数据合并方法,在大数据的情景下,能够高效的实现数据的合并。本申请提供了一种数据合并方法,所述方法包括:对数据进行压缩处理;基于压缩后表的数据量大小设置分区个数;通过对增量数据层和全量数据层的主键哈希,按照分区个数取模,将增量数据和全量数据分别拆分到不同的临时目录;对增量数据层和全量数据层对应分区下的文件执行相应的合并操作;将合并操作结果输出到临时目录和全量数据目录。优选地,所述对数据进行压缩处理包括:采用ORC格式对数据进行压缩处理。优选地,所述对增量数据层和全量数据层对应分区下的文件执行相应的合并操作包括:增量数据层T+1日对应的临时目录下每个分区下和全量数据层T日对应临时目录下每个分区下,相同主键的,取增量数据层临时目录对应的记录。优选地,所述对增量数据层和全量数据层对应分区下的文件执行相应的合并操作包括:增量数据层T+1日对应的临时目录下每个分区下和全量数据层T日对应临时目录下每个分区下,增量数据层有记录,全量数据层无记录的,取增量数据层临时目录下的记录。优选地,所述对增量数据层和全量数据层对应分区下的文件执行相应的合并操作包括:增量数据层T+1日对应的临时目录下每个分区下和全量数据层T日对应临时目录下每个分区下,增量数据层无记录,全量数据层有记录的,取全量数据层临时目录下的记录。一种数据合并系统,包括:处理模块,用于对数据进行压缩处理;设置模块,用于基于压缩后表的数据量大小设置分区个数;拆分模块,用于通过对增量数据层和全量数据层的主键哈希,按照分区个数取模,将增量数据和全量数据分别拆分到不同的临时目录;合并处理模块,用于对增量数据层和全量数据层对应分区下的文件执行相应的合并操作;输出模块,用于将合并操作结果输出到临时目录和全量数据目录。优选地,所述处理模块具体用于:采用ORC格式对数据进行压缩处理。优选地,所述合并处理模块具体用于:增量数据层T+1日对应的临时目录下每个分区下和全量数据层T日对应临时目录下每个分区下,相同主键的,取增量数据层临时目录对应的记录。优选地,所述合并处理模块具体用于:增量数据层T+1日对应的临时目录下每个分区下和全量数据层T日对应临时目录下每个分区下,增量数据层有记录,全量数据层无记录的,取增量数据层临时目录下的记录。优选地,所述合并处理模块具体用于:增量数据层T+1日对应的临时目录下每个分区下和全量数据层T日对应临时目录下每个分区下,增量数据层无记录,全量数据层有记录的,取全量数据层临时目录下的记录。综上所述,本申请公开了一种数据合并方法,当需要对大数据进行合并处理时,首先对数据进行压缩处理,然后基于压缩后表的数据量大小设置分区个数,通过对增量数据层和全量数据层的主键哈希,按照分区个数取模,将增量数据和全量数据分别拆分到不同的临时目录,对增量数据层和全量数据层对应分区下的文件执行相应的合并操作,最后将合并操作结果输出到临时目录和全量数据目录。本申请相对于现有技术,能够高效的实现数据的合并。附图说明为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1为本申请公开的一种数据合并方法实施例1的方法流程图;图2为本申请公开的一种数据合并方法实施例2的方法流程图;图3为本申请公开的一种数据合并方法实施例3的方法流程图;图4为本申请公开的一种数据合并方法实施例4的方法流程图;图5为本申请公开的一种数据合并系统实施例1的结构示意图;图6为本申请公开的一种数据合并系统实施例2的结构示意图;图7为本申请公开的一种数据合并系统实施例3的结构示意图;图8为本申请公开的一种数据合并系统实施例4的结构示意图。具体实施方式下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。如图1所示,为申请提供的一种数据合并方法实施例1的方法流程图,所述方法可以包括以下步骤:S101、对数据进行压缩处理;需要合并的每个表全量数据层T-1日分区数据量达到数百G,增量数据层T日分区数据量达到数十G,在前期数据清洗等过程后,需要进一步对数据进行压缩处理,以节省存储空间,并减小合并操作的数据大小。需要说明的是,增量数据是指每日新增数据,在行内常指每日下发的变更后数据;全量数据是指某个时间点全部记录数据。增量数据层是指存放每日增量数据的目录,全量数据层是指存放每日全量数据的目录。S102、基于压缩后表的数据量大小设置分区个数;当对数据进行压缩处理后,通过参数化配置,根据表数据量大小分别独立设置分区个数,直接在配置文件配置即可。假设表A,分区个数设置为N,主键为字符串key。S103、通过对增量数据层和全量数据层的主键哈希,按照分区个数取模,将增量数据和全量数据分别拆分到不同的临时目录;然后,对标A主键执行MOD(HASH(key),N)操作,使用Mapreduce拆分区到临时目录,临时目录下文件有N个。需要说明的是,全量数据除首次需要执行上述操作外,以后每次只需使用上一天的临时目录下对应日期分区下的文件即可,这种多个分区并行做合并的过程,同时使用sparksql技术大大缩短了合并的使用时间。S104、对增量数据层和全量数据层对应分区下的文件执行相应的合并操作;然后再用sparksql进行合并加工,针对全量数据层和增量数据层对应n(0<=n<N)分区下的文件执行相应的合并操作。S105、将合并操作结果输出到临时目录或全量数据目录。最后将结果输出到临时目录T+1分区下,和全量数据层的T+1日分区目录下。综上所述,当需要对大数据进行合并处理时,首先对数据进行压缩处理,然后基于压缩后表的数据量大小设置分区个数,通过对增量数据层和全量数据层的主键哈希,按照分区个数取模,将增量数据和全量数据分别拆分到不同的临时目录,对增量数据本文档来自技高网...

【技术保护点】
1.一种数据合并方法,其特征在于,所述方法包括:对数据进行压缩处理;基于压缩后表的数据量大小设置分区个数;通过对增量数据层和全量数据层的主键哈希,按照分区个数取模,将增量数据和全量数据分别拆分到不同的临时目录;对增量数据层和全量数据层对应分区下的文件执行相应的合并操作;将合并操作结果输出到临时目录和全量数据目录。

【技术特征摘要】
1.一种数据合并方法,其特征在于,所述方法包括:对数据进行压缩处理;基于压缩后表的数据量大小设置分区个数;通过对增量数据层和全量数据层的主键哈希,按照分区个数取模,将增量数据和全量数据分别拆分到不同的临时目录;对增量数据层和全量数据层对应分区下的文件执行相应的合并操作;将合并操作结果输出到临时目录和全量数据目录。2.根据权利要求1所述的方法,其特征在于,所述对数据进行压缩处理包括:采用ORC格式对数据进行压缩处理。3.根据权利要求1所述的方法,其特征在于,所述对增量数据层和全量数据层对应分区下的文件执行相应的合并操作包括:增量数据层T+1日对应的临时目录下每个分区下和全量数据层T日对应临时目录下每个分区下,相同主键的,取增量数据层临时目录对应的记录。4.根据权利要求1所述的方法,其特征在于,所述对增量数据层和全量数据层对应分区下的文件执行相应的合并操作包括:增量数据层T+1日对应的临时目录下每个分区下和全量数据层T日对应临时目录下每个分区下,增量数据层有记录,全量数据层无记录的,取增量数据层临时目录下的记录。5.根据权利要求1所述的方法,其特征在于,所述对增量数据层和全量数据层对应分区下的文件执行相应的合并操作包括:增量数据层T+1日对应的临时目录下每个分区下和全量数据层T日对应临时目录下每个分区下,增量数据层无记录,全量数据层有记录的...

【专利技术属性】
技术研发人员:李英军余春祖王娟娟
申请(专利权)人:中国银行股份有限公司
类型:发明
国别省市:北京,11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1