首页 / 专利库 / 企业组织 / 商业智能 / 一种基于Spark的小文件合并方法及系统

一种基于Spark的小文件合并方法及系统

阅读:949发布:2020-05-08

专利汇可以提供一种基于Spark的小文件合并方法及系统专利检索,专利查询,专利分析的服务。并且本 发明 公开了一种基于Spark的小文件合并方法及系统,本方案通过定时合并小文件任务,根据任务规则将多个分区中的多个文件合并成1个文件,降低小文件散落数量,当查询Hive库中数据时能降低磁盘读取负荷,网络传输消耗,数据合并等过程提升数据查询效率。解决了现有方案对源 数据库 中的数据 抽取 到Hive库中,Spark同时多个任务同时读取源数据库数据,并将数据写入到不同分区中导致的磁盘读取倍增、数据查询性能就会下降的问题。,下面是一种基于Spark的小文件合并方法及系统专利的具体信息内容。

1.一种基于Spark的小文件合并方法,基于源数据库、带有Spark引擎的商业智能分析平台和装载有hadoop文件系统的Hive数据库,其特征在于:还包括以下步骤:
S1、用户通过商业智能分析平台操作源数据库并配置数据抽取功能;
S2、商业智能分析平台根据用户配置的N个抽取分区读取源数据库中的数据,将抽取的数据写入到Hive数据库中M个分区中,每个分区文件数为N个,M、N均为正整数;
S3、hadoop文件系统根据用户预录入的时间周期和任务规则对M个分区中的文件进行合并。
2.根据权利要求1所述的一种基于Spark的小文件合并方法,其特征在于:所述商业智能分析平台包括与源数据库匹配的数据集,在步骤S1中,用户通过商业智能分析平台中的数据集的数据集处理节点操作源数据库并配置数据抽取功能。
3.根据权利要求1所述的一种基于Spark的小文件合并方法,其特征在于:所述步骤S2中商业智能分析平台根据用户配置的N个抽取分区读取源数据库中的数据的方法为:Spark引擎同时执行N个任务读取源数据库数据,并将数据写入到M个分区中。
4.根据权利要求1所述的一种基于Spark的小文件合并方法,其特征在于:所述步骤S3中hadoop文件系统根据用户预录入的时间周期和任务规则对M个分区中的文件进行合并的方法包括以下步骤:
S301、用户对hadoop文件系统进行配置,设置hadoop文件系统进行文件合并的周期,配置文件合并的任务规则;
S302、hadoop文件系统启动后开始计时,计时达到步骤S301中周期预设的时间后,hadoop文件系统根据步骤S301配置的任务规则对M个分区中的文件进行合并;
S303、hadoop文件系统完成文件合并后重置计时器然后转入步骤S302。
5.根据权利要求4所述的一种基于Spark的小文件合并方法,其特征在于:所述步骤S302中的任务规则包括:按文件名称进行排序后合并、按文件创建时间进行排序后合并、按文件修改时间进行排序后合并及按文件大小进行排序后合并。
6.根据权利要求4所述的一种基于Spark的小文件合并方法,其特征在于:所述步骤S303合并后的文件包括:文件头和文件内容,所述文件头包括合并前所有文件的名称,所述文件内容包括合并前所有文件的数据。
7.一种基于Spark的小文件合并系统,其特征在于:包括源数据库、带有Spark引擎的商业智能分析平台和基于hadoop文件系统的Hive数据库;
所述Hive数据库包括:
存储器,用于存储可执行指令及文件;
处理器,用于执行所述存储器中存储的可执行指令,实现如权利要求1所述的一种基于Spark的小文件合并方法。

说明书全文

一种基于Spark的小文件合并方法及系统

技术领域

[0001] 本发明涉及商业智能分析平台领域,特别涉及一种基于Spark的小文件合并方法及系统。

背景技术

[0002] 商业智能(Business Intelligence,简称:BI),又称商业智慧或商务智能,指用现代数据仓库技术、线上分析处理技术、数据挖掘和数据展现技术进行数据分析以实现商业价值。
[0003] 商业智能通常被理解为将企业中现有的数据转化为知识,帮助企业做出明智的业务经营决策的工具。这里所谈的数据包括来自企业业务系统的订单、库存、交易账目、客户和供应商等来自企业所处行业和竞争对手的数据以及来自企业所处的其他外部环境中的各种数据。而商业智能能够辅助的业务经营决策,既可以是操作层的,也可以是战术层和战略层的决策。为了将数据转化为知识,需要利用数据仓库、联机分析处理(OLAP)工具和数据挖掘等技术。因此,从技术层面上讲,商业智能不是什么新技术,它只是数据仓库、OLAP和数据挖掘等技术的综合运用。
[0004] 可以认为,商业智能是对商业信息的搜集、管理和分析过程,目的是使企业的各级决策者获得知识或洞察(insight),促使他们做出对企业更有利的决策。商业智能一般由数据仓库、联机分析处理、数据挖掘、数据备份和恢复等部分组成。商业智能的实现涉及到软件硬件、咨询服务及应用,其基本体系结构包括数据仓库、联机分析处理和数据挖掘三个部分。
[0005] 因此,把商业智能看成是一种解决方案应该比较恰当。商业智能的关键是从许多来自不同的企业运作系统的数据中提取出有用的数据并进行清理,以保证数据的正确性,然后经过抽取(Extraction)、转换(Transformation)和装载(Load),即ETL过程,合并到一个企业级的数据仓库里,从而得到企业数据的一个全局视图,在此基础上利用合适的查询和分析工具、数据挖掘工具(大数据魔镜)、OLAP工具等对其进行分析和处理(这时信息变为辅助决策的知识),最后将知识呈现给管理者,为管理者的决策过程提供支持。
[0006] 现有方案对源数据库中的数据抽取到Hive库中,Spark同时进行多个任务同时读取源数据库数据,并将数据写入到不同分区中,当数据落地到hadoop文件系统中就会产生每个分区多个文件,且当用户再次进行数据增量抽取时文件会呈指数增长,文件个数增长后系统查询文件系统的数据时,磁盘读取倍增、数据查询性能就会下降。

发明内容

[0007] 本发明的目的在于:提供了一种基于Spark的小文件合并方法及系统,解决了现有方案对源数据库中的数据抽取到Hive库中,Spark同时多个任务同时读取源数据库数据,并将数据写入到不同分区中导致的磁盘读取倍增、数据查询性能就会下降的问题。
[0008] 本发明采用的技术方案如下:
[0009] 一种基于Spark的小文件合并方法,基于源数据库、带有Spark引擎的商业智能分析平台和装载有hadoop文件系统的Hive数据库,还包括以下步骤:
[0010] S1、用户通过商业智能分析平台操作源数据库并配置数据抽取功能;
[0011] S2、商业智能分析平台根据用户配置的N个抽取分区读取源数据库中的数据,将抽取的数据写入到Hive数据库中M个分区中,每个分区文件数为N个,M、N均为正整数;
[0012] S3、hadoop文件系统根据用户预录入的时间周期和任务规则对M个分区中的文件进行合并。
[0013] 现有方案对源数据库中的数据抽取到hive库中,步骤是Spark同时进行多个任务同时读取N个源数据库数据,并将数据写入到M个分区中,当数据落地到hadoop文件系统中就会产生每个分区N个文件,且当用户再次进行数据增量抽取时文件会再次增加M*N个,文件个数倍增后系统查询文件系统的数据时,磁盘读取倍增、数据查询性能就会下降,本方案主要是解决抽取后产生的文件个数,以达到提高系统性能的目的。
[0014] 本发明主要通过以下技术方案实现:
[0015] 首先用户通过平台在数据集中通过数据集处理节点操作数据源并配置数据抽取功能。然后系统会根据用户配置的N抽取分区读取数据源数据,并写入到Hive库中M个分区中,数据文件会M个分区中,且每个分区文件数为N个;最后系统通过定时合并小文件任务,根据任务规则将N个分区中的M文件合并成1个文件,降低小文件散落数量,当查询Hive库中数据时能降低磁盘读取负荷,网络传输消耗,数据合并等过程提升数据查询效率。
[0016] 进一步的,所述商业智能分析平台包括与源数据库匹配的数据集,在步骤S1中,用户通过商业智能分析平台中的数据集的数据集处理节点操作源数据库并配置数据抽取功能。
[0017] 进一步的,所述步骤S2中商业智能分析平台根据用户配置的N个抽取分区读取源数据库中的数据的方法为:Spark引擎同时执行N个任务读取源数据库数据,并将数据写入到M个分区中。
[0018] 进一步的,所述步骤S3中hadoop文件系统根据用户预录入的时间周期和任务规则对M个分区中的文件进行合并的方法包括以下步骤:
[0019] S301、用户对hadoop文件系统进行配置,设置hadoop文件系统进行文件合并的周期,配置文件合并的任务规则;
[0020] S302、hadoop文件系统启动后开始计时,计时达到步骤S301中周期预设的时间后,hadoop文件系统根据步骤S301配置的任务规则对M个分区中的文件进行合并;
[0021] S303、hadoop文件系统完成文件合并后重置计时器然后转入步骤S302。
[0022] 进一步的,所述步骤S302中的任务规则包括:按文件名称进行排序后合并、按文件创建时间进行排序后合并、按文件修改时间进行排序后合并及按文件大小进行排序后合并。
[0023] 进一步的,所述步骤S303合并后的文件包括:文件头和文件内容,所述文件头包括合并前所有文件的名称,所述文件内容包括合并前所有文件的数据。
[0024] 一种基于Spark的小文件合并系统,包括源数据库、带有Spark引擎的商业智能分析平台和基于hadoop文件系统的Hive数据库;
[0025] 所述Hive数据库包括:
[0026] 存储器,用于存储可执行指令及文件;
[0027] 处理器,用于执行所述存储器中存储的可执行指令,实现上述的一种基于Spark的小文件合并方法。
[0028] 综上所述,由于采用了上述技术方案,本发明的有益效果是:
[0029] 1.本发明一种基于Spark的小文件合并方法及系统,解决了现有方案对源数据库中的数据抽取到Hive库中,Spark同时多个任务同时读取源数据库数据,并将数据写入到不同分区中导致的磁盘读取倍增、数据查询性能就会下降的问题;
[0030] 2.本发明一种基于Spark的小文件合并方法及系统,本方案可以减少磁盘文件散落分布,降低查询数据时磁盘读取I/O负荷,减少网络传输消耗,降低查询时多文件数据合并所产生的内存消耗,提高查询效率,提升用户感知附图说明
[0031] 为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图,其中:
[0032] 图1是本发明的流程示意图;
[0033] 图2是本发明的小文件合并前文件数量示意图;
[0034] 图3是本发明的小文件合并后文件数量示意图;
[0035] 图4是本发明的小文件合并前文件数量截图;
[0036] 图5是本发明的小文件合并后文件数量截图。

具体实施方式

[0037] 为了使本发明的目的、技术方案和优点更加清楚,下面将结合图1至图5对本发明作进一步地详细描述,所描述的实施例不应视为对本发明的限制,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
[0038] 除非另有定义,本文所使用的所有的技术和科学术语与属于本发明的技术领域的技术人员通常理解的含义相同。本文中所使用的术语只是为了描述本发明实施例的目的,不是旨在限制本发明。
[0039] 对本发明实施例进行进一步详细说明之前,对本发明实施例中涉及的名词和术语进行说明,本发明实施例中涉及的名词和术语适用于如下的解释。
[0040] Spark:Apache Spark是专为大规模数据处理而设计的快速通用的计算引擎,Spark启用了内存分布数据集,除了能够提供交互式查询外,它还可以优化迭代工作负载;
[0041] Hive:Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供类SQL查询功能;
[0042] 数据源:对文件,数据库这类数据来源的统称;
[0043] 数据处理节点:是商业智能分析平台对数据处理功能的细分节点,其中包括表关联、字段过来、数据过滤、计算字段、分组统计、数据类型等功能,主要是对数据源进行数据的清洗、过滤、拆分等等一系列处理功能;
[0044] 数据集:对数据源采用数据处理节点配置后的统称,一个数据集可以包含一个或者多个数据源,一个或者多个数据处理节点,生成的数据集可以认为是一个虚拟的数据源;
[0045] 分析:是对数据集处理后过程产生的维度,度量进行配置查询和数据关联图形组件的模,在模块中可以将一个数据集产生的维度指标绑定到多个不通类型的展示组件上;
[0046] 报告:是对分析组件进行组装,布局配置后供用户查看的报表模块;
[0047] Presto:是一个开源的分布式SQL查询引擎,用于针对各种大小的数据源运行交互式分析查询;
[0048] Launcher:商业智能分析平台所开发的一个提交Spark任务的容器组件,由该组件对Spark任务进行动态提交;
[0049] 实施例1
[0050] 一种基于Spark的小文件合并方法,基于源数据库、带有Spark引擎的商业智能分析平台和装载有hadoop文件系统的Hive数据库,还包括以下步骤:
[0051] S1、用户通过商业智能分析平台操作源数据库并配置数据抽取功能;
[0052] S2、商业智能分析平台根据用户配置的N个抽取分区读取源数据库中的数据,将抽取的数据写入到Hive数据库中M个分区中,每个分区文件数为N个,M、N均为正整数;
[0053] S3、hadoop文件系统根据用户预录入的时间周期和任务规则对M个分区中的文件进行合并。
[0054] 实施例2
[0055] 本实施例在实施例1的基础上进一步的,所述商业智能分析平台包括与源数据库匹配的数据集,在步骤S1中,用户通过商业智能分析平台中的数据集的数据集处理节点操作源数据库并配置数据抽取功能。
[0056] 进一步的,所述步骤S2中商业智能分析平台根据用户配置的N个抽取分区读取源数据库中的数据的方法为:Spark引擎同时执行N个任务读取源数据库数据,并将数据写入到M个分区中。
[0057] 实施例3
[0058] 本实施例在实施例1的基础上进一步的,所述步骤S3中hadoop文件系统根据用户预录入的时间周期和任务规则对M个分区中的文件进行合并的方法包括以下步骤:
[0059] S301、用户对hadoop文件系统进行配置,设置hadoop文件系统进行文件合并的周期,配置文件合并的任务规则;
[0060] S302、hadoop文件系统启动后开始计时,计时达到步骤S301中周期预设的时间后,hadoop文件系统根据步骤S301配置的任务规则对M个分区中的文件进行合并;
[0061] S303、hadoop文件系统完成文件合并后重置计时器然后转入步骤S302。
[0062] 进一步的,所述步骤S302中的任务规则包括:按文件名称进行排序后合并、按文件创建时间进行排序后合并、按文件修改时间进行排序后合并及按文件大小进行排序后合并。
[0063] 进一步的,所述步骤S303合并后的文件包括:文件头和文件内容,所述文件头包括合并前所有文件的名称,所述文件内容包括合并前所有文件的数据。
[0064] 实施例4
[0065] 一种基于Spark的小文件合并系统,包括源数据库、带有Spark引擎的商业智能分析平台和基于hadoop文件系统的Hive数据库;
[0066] 所述Hive数据库包括:
[0067] 存储器,用于存储可执行指令及文件;
[0068] 处理器,用于执行所述存储器中存储的可执行指令,实现上述的一种基于Spark的小文件合并方法。
[0069] 实施例5
[0070] 本实施例为本方案的部分功能代码:
[0071] ResultSet resultSet=stat.executeQuery("show partitI/Ons"+table);
[0072] if(resultSet==null)continue;
[0073] while(resultSet.next()){
[0074] stat.execute("alter table"+table+"partitI/On("+resultSet.getString(1)+")concatenate");
[0075] }
[0076] resultSet.close();
[0077] //更新ec_dataset_info的合并分区字段状态。
[0078] datasetManageMapper.updateMergeFileStatus(datasetId,0)。
[0079] 实施例6
[0080] 如图4所示,本实施例为采用本方案合并前的文件列表,合并前,每个分区都是8个文件,每个文件约410KB,分区大小为256MB,系统查询文件系统的数据时,相当于读取了8个小文件,现在的硬盘存储器在读取文件前都需要进行寻道,8个小文件就需要8次寻道,寻道时间约8ms,而数据传输时间约为一个文件5ms,共计需要104ms。
[0081] 实施例7
[0082] 如图5所示,本实施例为采用本方案合并前的文件列表,合并前,每个分区都是1个大文件,文件约3.2MB,分区大小为256MB,系统查询文件系统的数据时,相当于只读取1个大文件,现在的硬盘存储器在读取文件前都需要进行寻道,1个小文件仅需要1次寻道,寻道时间约8ms,而数据传输时间约为一个大文件40ms,共计需要48ms。解决了现有方案对源数据库中的数据抽取到Hive库中,Spark同时多个任务同时读取源数据库数据,并将数据写入到不同分区中导致的磁盘读取倍增、数据查询性能就会下降的问题。
[0083] 在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图框图显示了根据本发明的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
[0084] 另外,在本发明各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
[0085] 所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
[0086] 以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
[0087] 以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈