一种数据文件处理方法和装置的制造方法

文档序号:10552965
一种数据文件处理方法和装置的制造方法
【专利摘要】本发明公开了一种数据文件处理方法和装置,该方法和装置根据定义的检索字段从原始数据文件中检索并收集与检索字段相同的特定关键值,然后对特定关键值进行分析,获取特定关键值的值域分布情况,然后结合Hadoop数据存放环境的集群资源使用情况确定文件存储策略和文件拆分策略,然后根据文件拆分策略对原始数据文件拆分为多个子文件,最终将各个子文件分别存储到HDFS集群的不同节点上。由上可知,本发明提供的数据文件处理方法和装置实现了数据文件的分布式存储。该分布式存储的子文件为数据文件的多线程操作提供了可能,因此,可以实现对多个子文件同时并行处理,提升数据处理效率。
【专利说明】
一种数据文件处理方法和装置
技术领域
[0001 ]本发明涉及数据处理技术领域,尤其涉及一种数据文件处理方法和装置。
【背景技术】
[0002]目前,针对超大规模的数据文件,例如银行交易系统中的交易流水数据,其数据量可能会达到TB级。现有技术中通常将该超大规模的数据文件作为一个整体存储成一个大的数据文件。如此针对该数据量巨大的数据文件在数据交互过程中的数据的存储和导入加工均会消耗大量的时间,进而导致处理困难,时效性滞后。
[0003]而且,由于数据表作为一个整体存成一个数据文件,对这样一个数据量巨大的数据文件的操作往往只能是单线程,因此,对该数据文件的处理也会消耗大量的时间。

【发明内容】

[0004]有鉴于此,本发明提供了一种数据文件处理方法和装置,以减小处理数据消耗的时间,提高处理效率。
[0005]为了达到上述发明目的,本发明采用了如下技术方案:
[0006]一种数据文件处理方法,包括:
[0007]根据定义的检索字段从原始数据文件中检索并收集与所述检索字段相同的特定关键值;
[0008]对收集到的特定关键值进行分析,计算所述原始数据文件的特定关键值的值域分布;
[0009]根据所述特定关键值的值域分布,结合HDFS集群中的节点数以及各节点存储资源使用情况确定所述原始数据文件的存储策略和拆分策略;
[0010]根据所述拆分策略将所述原始数据文件拆分为多个子文件;
[0011 ]根据所述存储策略将各个子文件分别存储在相应节点上。
[0012]可选地,所述根据所述拆分策略将所述原始数据文件拆分为多个子文件,具体包括:
[0013]根据拆分策略确定各个子文件的特定关键值的值域上下限;
[0014]在所述原始数据文件中定位各个子文件的特定关键值的值域上下限;
[0015]根据各个子文件的特定关键值的值域上下限,对所述原始数据文件进行拆分,提取出各个子文件。
[0016]可选地,所述对收集到的特定关键值进行分析,计算所述原始数据文件的特定关键值的值域分布,具体包括:
[0017]基于Spark的流处理技术将收集到的特定关键值抽取到内存中;
[0018]对抽取到内存中的特定关键值进行并发快速分析,计算所述原始数据文件中的特定关键值的值域分布。
[0019]可选地,所述根据各个子文件的特定关键值的值域上下限,对所述原始数据文件进行拆分,提取出各个子文件,具体包括:
[0020]利用Spark管道处理技术,根据各个子文件的特定关键值的值域上下限,对所述原始数据文件进行拆分,提取出各个子文件。
[0021]可选地,所述根据所述存储策略将各个子文件分别存储在相应节点上后,还包括:
[0022]当原始数据文件需要与关系型数据库对接时,制定开发对接元数据,通过外部表的方式利用多线程将存储在HDFS集群节点中的各个子文件并发导入数据库。
[0023]可选地,所述根据所述存储策略将各个子文件分别存储在相应节点上后,还包括:
[0024]当前台应用需要查询原始数据文件时,制定开发查询元数据,通过类sql方法实现前台应用对存储在各个节点上的子文件的查询。
[0025]可选地,所述根据所述存储策略将各个子文件分别存储在相应节点上后,还包括:
[0026]当Webservice需要对原始数据文件进行访问时,制定开发Webservice元数据,通过类sql方法实现Webservice对存储在各个节点上的子文件的访问,并进行结果展示。
[0027]可选地,所述原始数据文件为压缩格式的数据文件或非压缩格式的数据文件。
[0028]一种数据文件处理装置,包括:
[0029]检索和收集单元,用于根据定义的检索字段从原始数据文件中检索并收集与所述检索字段相同的特定关键值;
[0030]分析单元,用于对收集到的特定关键值进行分析,计算所述原始数据文件的特定关键值的值域分布;
[0031]确定单元,用于根据所述特定关键值的值域分布,结合HDFS集群中的节点数以及各节点存储资源使用情况确定所述原始数据文件的存储策略和拆分策略;
[0032]拆分单元,用于根据所述拆分策略将所述原始数据文件拆分为多个子文件;
[0033]存储单元,用于根据所述存储策略将各个子文件分别存储在相应节点上。
[0034]可选地,所述拆分单元包括:
[0035]确定子单元,用于根据拆分策略确定各个子文件的特定关键值的值域上下限;
[0036]定位子单元,用于在所述原始数据文件中定位各个子文件的特定关键值的值域上下限;
[0037]提取子单元,用于根据各个子文件的特定关键值的值域上下限,对所述原始数据文件进行拆分,提取出各个子文件。
[0038]可选地,所述分析单元包括:
[0039]抽取子单元,用于基于Spark的流处理技术将收集到的特定关键值抽取到内存中;
[0040]计算子单元,用于对抽取到内存中的特定关键值进行并发快速分析,计算所述原始数据文件中的特定关键值的值域分布。
[0041]可选地,所述提取子单元包括利用Spark管道处理技术,根据各个子文件的特定关键值的值域上下限,对所述原始数据文件进行拆分,提取出各个子文件的子单元。
[0042]可选地,所述装置还包括:
[0043]数据库对接单元,用于当原始数据文件需要与关系型数据库对接时,制定开发对接元数据,通过外部表的方式利用多线程将存储在HDFS集群节点中的各个子文件并发导入数据库。
[0044]可选地,所述装置还包括:
[0045]查询单元,用于当前台应用需要查询原始数据文件时,制定开发查询元数据,通过类sql方法实现前台应用对存储在各个节点上的子文件的查询。
[0046]可选地,所述装置还包括:
[0047]Webservice访问单元,用于当Webservice需要对原始数据文件进行访问时,制定开发Webservice元数据,通过类sql方法实现Webservice对存储在各个节点上的子文件的访问,并进行结果展示。
[0048]可选地,所述原始数据文件为压缩格式的数据文件或非压缩格式的数据文件。[0049 ]相较于现有技术,本发明具有以下有益效果:
[0050]通过以上技术方案可知,本发明提供的数据文件处理方法首先根据定义的检索字段从原始数据文件中检索并收集与检索字段相同的特定关键值,然后对特定关键值进行分析,获取特定关键值的值域分布情况,然后结合Hadoop数据存放环境的集群资源使用情况确定文件存储策略和文件拆分策略,然后根据文件拆分策略对原始数据文件拆分为多个子文件,最终将各个子文件分别存储到HDFS集群的不同节点上。由上可知,本发明提供的数据文件处理方法实现了数据文件的分布式存储。该分布式存储的子文件为数据文件的多线程操作提供了可能,因此,可以实现对多个子文件同时并行处理,提升数据处理效率。
【附图说明】
[0051]为了清楚地理解本发明的技术方案,下面将描述本发明【具体实施方式】时用到的附图做一简要说明。
[0052]图1是本发明实施例提供的数据文件处理方法流程示意图;
[0053]图2是本发明实施例提供的图1中的步骤SlOl的一个具体实现方式流程示意图;
[0054]图3是本发明实施例提供的一种数据文件处理装置结构示意图;
[0055]图4是本发明实施例提供的拆分单元的结构示意图;
[0056]图5是本发明实施例提供的分析单元结构示意图;
[0057]图6是本发明实施例提供的另一种数据文件处理装置结构示意图;
[0058]图7是基于图6所示的处理装置的数据处理方法流程示意图。
【具体实施方式】
[0059]为使本发明的目的、技术手段和技术效果更加清楚、完整,下面结合附图对本发明的【具体实施方式】进行详细描述。
[0060]为了清楚地理解本发明的技术方案,在介绍本发明的【具体实施方式】之前,首先介绍与本发明【具体实施方式】相关的技术术语。
[0061 ] Hadoop:分布式数据存储框架,通过分布式文件系统HDFS(Hadoop DistributedFile System)可以将海量数据快速存储,并提供了多种快速检索处理的手段。
[0062]Spark:是一种基于内存的快速并行计算框架,它可以提供灵活强大的数据处理计算功能。它提高了在海量数据环境下数据处理的快速响应,同时保证了高容错性,成本低廉。
[0063]文件拆分:根据特定关键值的值域分布,以及Hadoop文件系统的存储资源使用情况对数据文件进行拆分。由于文件拆分为多个,可以并发操作,大幅提升性能。
[0064]外部表:是指不存在于数据库中的表。通过向Oracle提供描述外部表的元数据,我们可以把一个操作系统文件当成一个只读的数据库表,就像这些数据存储在一个普通数据库表中一样来进行访问。外部表是对数据库表的延伸。通过外部表可以实现对数据文件的增加、删除、修改和查找操作。
[0065]元数据:又称中介数据、中继数据,为描述数据的数据(dataabout data),主要是描述数据属性(property)的信息,用来支持如指示存储位置、历史数据、资源查找、文件记录等功能。
[0066]下面结合附图对本发明的【具体实施方式】进行详细描述。
[0067]为了解决超大规模的数据文件作为一个整体存储成一个大的数据文件导致的后续对数据加工处理只能单线程操作,消耗大量时间的问题,本发明实施例提供了一种数据文件处理方法,该数据文件处理方法可以快速对大规模数据文件进行分析、拆分、存储和管理,能够有效解决上述技术问题。该数据处理方法充分利用了 Hadoop适用于海量数据存储的特点,通过分布式文件系统HDFS可以将一个大的数据文件拆分成多个子文件,然后将这些子文件分别存储在HDFS的不同节点上,从而实现了数据文件的分布式存储。
[0068]图1是本发明实施例提供的数据文件处理方法流程示意图。如图1所示,该方法包括以下步骤:
[0069]SlOl、根据定义的检索字段从原始数据文件中检索并收集与所述检索字段相同的特定关键值:
[0070]需要说明的是,本发明提供的数据文件处理方法不仅支持非压缩格式的数据文件,还支持压缩格式的数据文件。当原始数据文件为压缩格式的数据文件时,能够大幅节约存储空间。
[0071 ]需要说明的是,作为本发明的一个具体实施例,当预先获知了原始数据文件中的关键值时,步骤SlOl的具体实现方式可以如下所示:预先定义检索字段,然后扫描原始数据文件,根据预先定义的检索字段从原始数据文件中检索并收集与所述检索字段相同的特定关键值。
[0072]需要说明的是,本发明实施例定义的检索字段可以为原始数据文件中的任一关键值,例如可以为数据记录的主键ID。此外,本发明实施例的检索字段可以为文字型字段,还可以为数值型字段,与之对应地,特定关键值可以为文字型字段,也可以为数值型字段。
[0073]此外,作为本发明的另一具体实施例,当预先无法获知原始数据文件中的关键值时,步骤SlOl的具体实现方式可以如下:先扫描原始数据文件,对原始数据文件中的关键值进行摸底,即此时扫描原始数据文件的目的是为了获知原始数据文件中的关键值,然后根据获知的原始数据文件的关键值定义检索字段,然后再扫描原始数据文件根据检索字段从原始数据文件中检索并收集与检索字段相同的特定关键值。
[0074]此外,作为本发明的又一具体实施例,步骤SlOl的具体实现方式还可以如图2所示,其包括以下步骤:
[0075]SlOl 1、扫描原始数据文件;
[0076]S1012、判断是否定义了检索字段,如果是,执行步骤S1013;如果否,执行步骤S1014;
[0077]S1013、扫描原始数据文件根据检索字段从原始数据文件中检索并收集与检索字段相同的特定关键值。
[0078]S1014、定义检索字段,返回执行步骤S1011,或者返回执行步骤S1013。
[0079]S102、对收集到的特定关键值进行分析,计算所述原始数据文件的特定关键值的值域分布:
[0080]需要说明的是,作为本发明的一个可选实施例,可以基于Spark的流处理技术对收集到的关键值进行分析,计算原始数据文件的关键值的值域分布。
[0081 ]其中,基于Spark的流处理技术对收集到的关键值进行分析,计算原始数据文件的关键值的值域分布的具体实现过程包括以下两个步骤:
[0082]Al、基于Spark的流处理技术将收集到的特定关键值抽取到内存中。
[0083]A2、对抽取到内存中的特定关键值进行并发快速分析,计算所述原始数据文件中的特定关键值的值域分布:
[0084]具体地,针对特定关键值为数值型关键值的情况,特定关键值的值域分布即为特定关键值的值在原始数据文件中跨越的数值范围。例如,针对银行交易系统中的存款交易流水或贷款交易流水,当特定关键值为数据记录的主键ID时,当10000条记录的主键ID分布在1000至9999之间时,则该主键ID的值域分布为1000到9999之间的范围。
[0085]针对特定关键值为文字型关键值的情况,在计算原始数据文件的特定关键值的值域分布之前,需要预先对文字型关键值进行分类,例如根据字典数据内容将文字型关键值分为不同类,文字型关键值的类别即为该文字型关键值的值。此时,计算原始数据文件中的特定关键值的值域分布就是计算原始数据文件中的文字类别的数量。
[0086]S103、根据所述特定关键值的值域分布,结合HDFS集群中的节点数以及各节点存储资源使用情况确定所述原始数据文件的存储策略和拆分策略:
[0087]其中,HDFS集群中各节点存储资源使用情况可以为各节点的剩余存储空间。下面举例说明本步骤的【具体实施方式】:
[0088]例如,HDFS集群中的节点数为10,可以将将该原始数据文件拆分为10个子文件,而且根据各节点的剩余存储空间和特定关键值的值域分布,确定拆分的各个子文件的大小以及各个子文件的值域分布上下限。举例说明:银行交易流水表中的10000条记录的主键ID分布在1000至9999之间,1000至3000的记录有9000条,那这9000条记录可以拆分成9个子文件,而3000至9000的数据为一个子文件。其中,拆分的子文件个数以及拆分的各个子文件的大小以及根据子文件的大小将其存储在大小适应的节点上的策略可以称之为存储策略。如何对原始数据文件进行拆分的策略称之为拆分策略。
[0089]需要说明的是,当特定关键值为数值型关键值时,其对应的值域分布中可能存在特定关键值的极值。当值域分布中存在特定关键值的极值时,为了后续拆分文件的方便,可以在文件拆分之前将这些极值从值域分布中去除,或者将这些极值从值域分布中提取出来,将这些极值数据形成单独的极值数据子文件。
[0090]S104、根据所述拆分策略将所述原始数据文件拆分为多个子文件:
[0091]本发明实施例可以利用Spark管道处理技术根据所述拆分策略将原始数据文件拆分为多个子文件。
[0092]作为本发明的一个示例,本步骤的具体实现方式可以包括以下步骤:
[0093]B1、根据拆分策略确定各个子文件的特定关键值的值域分布上下限:
[0094]上述步骤S103根据特定关键值的值域分布,结合HDFS集群中的各节点的存储资源情况以及节点数可以确定原始数据文件的拆分策略。
[0095]根据该拆分策略可以确定各个子文件的特定关键值的值域分布的上下限。
[0096]B2、在所述原始数据文件中定位各个子文件的特定关键值的值域分布上下限。
[0097]B3、根据各个子文件的特定关键值值域分布上下限,对所述原始数据文件进行拆分,提取出各个子文件:
[0098]利用Spark流处理技术根据各个子文件的特定关键值的值域分布上下限,对原始数据文件进行拆分,从原始数据文件中提取出各个子文件,提取出的各个子文件即为拆分后的子文件。
[0099]S105、根据所述存储策略将各个子文件分别存储在相应节点上:
[0100]在本发明实施例中,数据存储采用分布式存储框架Hadoop中的分布式文件系统HDFS,拆分出的各个子文件可以根据存储策略和各个子文件的文件大小分别存储到相应节点上。
[0101]为了实现将上述存储的数据文件导入数据库中,作为本发明的可选实施例,上述所述的数据文件处理方法还可以包括以下步骤:
[0102]S106、判断原始数据文件是否需要与关系型数据库对接,如果是,执行步骤S107,如果否,结束运行:
[0103]S107、制定开发对接元数据,通过外部表的方式利用多线程将存储在HDFS集群节点中的各个子文件并发导入数据库。
[0104]通过以上【具体实施方式】,本发明实施例利用外部表可以多线程对HDFS分布式存储的子文件并发操作,将各个子文件并发导入数据库。相较于现有技术中只能通过单线程将整个数据文件导入数据库的方式,本发明实施例使HDFS集群每个阶段的资源都被充分调动起来,处理效率成倍提升。
[0105]另外,本发明提供的数据文件处理方法能够支持压缩文件直接转换入库,所以,该数据文件处理方法不仅能够大幅提升数据处理效率,而且还能够节省很多存储空间。
[0106]为了实现前台应用对原始数据文件的查询统计,作为本发明的另一实施例,在上述实施例的基础上,还可以包括以下步骤:
[0107]S108、判断前台应用是否查询统计原始数据文件,如果是,执行步骤S109,如果否,结束运行。
[0108]S109、制定开发查询元数据,通过类sql (结构化查询语言,Structured QueryLanguage)方法实现前台应用对存储在各个节点上的子文件的查询:
[0109]其中,标准sql语句通过Spark解析后可以完成一系列ETL操作,提供给前台页面。其中,ETL,是英文Extract-Transform-Load的缩写,用来描述将数据从来源端经过抽取(extract)、转换(transform)、加载(load)至目的端的过程。
[Ο??Ο]为了实现Webservice访问原始数据文件,作为本发明的又一实施例,在上述任一实施例的基础上,还可以进一步包括以下步骤:
[0111]S110、判断webservice是否需要访问原始数据文件,如果是,执行步骤Slll,如果否,结束运行。
[0112]Slll、制定开发Webservice元数据,通过类sql方法实现Webservice对存储在各个节点上的子文件的访问,并进行结果展示。
[0113]以上为本发明实施例提供的数据文件处理方法的【具体实施方式】。在该【具体实施方式】中,由于原始数据文件可以拆分为多个子文件,并将拆分后的多个子文件分别存储在HDFS集群中的不同节点上。因此,本发明提供的数据文件处理方法实现了数据文件的分布式存储,所以,该数据文件处理方法的数据存储过程能够充分利用存储资源,使存储资源利用更合理。而且,该分布式存储的子文件为数据文件的多线程操作提供了可能,因此,可以实现对子文件的访问能够实现并发多节点读写,使数据的访问操作效率实现了成倍提升。此外,HDFS可以部署在廉价的PC集群中,大幅节约成本。
[0114]另外,本发明实施例在计算特定关键值值域分布和原始数据文件拆分成子文件的过程中均利用了 Spark流处理技术。因此,该数据处理方法充分发挥了 Spark基于内存的并行计算优势,并且使用分布式文件系统的数据特点,大幅提高了数据处理效率。
[0115]此外,在对分布式存储数据文件的访问过程中,可以采用多线程并行访问处理,极大地提升了数据访问性能。另外,在该数据处理方法中,前台应用或Webservice可以直接对数据文件进行查询分析,不再在数据文件访问处理前,先将数据先导入数据库的操作。
[0116]基于上述实施例提供的数据文件处理方法,本发明实施例还提供了一种数据文件处理装置,具体参见以下实施例。
[0117]图3是本发明实施例提供的数据文件处理装置结构示意图。如图3所示,该处理装置包括以下单元:
[0118]检索和收集单元31,用于根据定义的检索字段从原始数据文件中检索并收集与所述检索字段相同的特定关键值;
[0119]分析单元32,用于对收集到的特定关键值进行分析,计算所述原始数据文件的特定关键值的值域分布;
[0120]确定单元33,用于根据所述特定关键值的值域分布,结合HDFS集群中的节点数以及各节点存储资源使用情况确定所述原始数据文件的存储策略和拆分策略;
[0121 ]拆分单元34,用于根据所述拆分策略将所述原始数据文件拆分为多个子文件;
[0122]存储单元35,用于根据所述存储策略将各个子文件分别存储在相应节点上。
[0123]作为本发明的一个具体实施例,拆分单元34的结构示意图如图4所示,其可以具体包括:
[0124]确定子单元341,用于根据拆分策略确定各个子文件的特定关键值的值域上下限;
[0125]定位子单元342,用于在所述原始数据文件中定位各个子文件的特定关键值的值域上下限;
[0126]提取子单元343,用于根据各个子文件的特定关键值的值域上下限,对所述原始数据文件进行拆分,提取出各个子文件。
[0127]作为本发明的另一具体实施例,分析单元32的结构示意图如图5所示,可以具体包括:
[0128]抽取子单元321,用于基于Spark的流处理技术将收集到的特定关键值抽取到内存中;
[0129]计算子单元322,用于对抽取到内存中的特定关键值进行并发快速分析,计算所述原始数据文件中的特定关键值的值域分布。
[0130]为了利用Spark管道处理技术进行数据文件拆分,所述提取子单元343包括利用Spark管道处理技术,根据各个子文件的特定关键值的值域上下限,对所述原始数据文件进行拆分,提取出各个子文件的子单元。
[0131]为了实现数据文件与数据库的对接,上述所述的数据文件处理装置还可以包括:
[0132]数据库对接单元36,用于当原始数据文件需要与关系型数据库对接时,制定开发对接元数据,通过外部表的方式利用多线程将存储在HDFS集群节点中的各个子文件并发导入数据库。
[0133]为了实现前台应用对原始数据文件的查询统计,作为本发明的另一实施例,上述所述的数据文件处理装置还可以包括:
[0134]查询单元37,用于当前台应用需要查询原始数据文件时,制定开发查询元数据,通过类sql方法实现前台应用对存储在各个节点上的子文件的查询。
[0135]为了实现Webservice访问原始数据文件,作为本发明的又一实施例,所述装置还可以包括:
[ΟΙ36] Webservice访问单元38,用于当Webservice需要对原始数据文件进行访问时,制定开发Webservice元数据,通过类sql方法实现Webservice对存储在各个节点上的子文件的访问,并进行结果展示。
[0137]以上为本发明实施例提供的数据文件处理装置的【具体实施方式】。需要说明的是,上述实施例所述的数据文件处理装置中的各个功能单元是与图1所示的处理方法的各个步骤相对应的。
[0138]另外,由于本发明实施例提供的数据文件方法可以快速对大规模数据文件进行分析、拆分、存储和管理的过程,因此,还可以认为上述实施例提供的数据文件处理装置包括4个功能模块。每个功能模块内包括多个功能单元。此时,本发明实施例提供的数据文件处理装置框架示意图如图6所示,其包括以下模块:数据探索模块61、数据拆分模块62、数据存储模块63和数据访问模块64。
[0139]其中,数据探索模块61能够实现以下功能:根据定义的检索字段从原始数据文件中检索并收集与所述检索字段相同的特定关键值;对收集到的特定关键值进行分析,计算所述原始数据文件的特定关键值的值域分布;根据所述特定关键值的值域分布,结合HDFS集群中的节点数以及各节点存储资源使用情况确定所述原始数据文件的存储策略和拆分策略。
[0140]数据拆分模块62能够实现以下功能:根据所述拆分策略将所述原始数据文件拆分为多个子文件;该数据拆分模块62实现的功能更具体为:根据拆分策略确定各个子文件的特定关键值的值域上下限;在所述原始数据文件中定位各个子文件的特定关键值的值域上下限;根据各个子文件的特定关键值的值域上下限,对所述原始数据文件进行拆分,提取出各个子文件。
[0141 ]数据存储模块63能够实现以下功能:根据所述存储策略将各个子文件分别存储在相应节点上,从而实现数据文件的分布式存储。如图4所示,将原始数据文件存储成η个子文件。其中,η彡2,且η为整数。
[0142]数据访问模块64能够实现以下功能:当原始数据文件需要与关系型数据库对接时,制定开发对接元数据,通过外部表的方式利用多线程将存储在HDFS集群节点中的各个子文件并发导入数据库。当前台应用需要查询原始数据文件时,制定开发查询元数据,通过类sql方法实现前台应用对存储在各个节点上的子文件的查询。当Webservice需要对原始数据文件进行访问时,制定开发Webservice元数据,通过类sql方法实现Webservice对存储在各个节点上的子文件的访问,并进行结果展示。
[0143]对应图3所示的数据文件处理装置,数据探索模块61包括检索和收集单元31、分析单元32和确定单元33 ;
[OH4]数据拆分模块62包括拆分单元34;
[0145]数据存储模块63包括存储单元35;
[0146]数据访问模块64包括数据库对接单元36、查询单元37和Webservice访问单元38。
[0147]图7是基于图6所示的数据文件处理装置提供的数据文件处理方法流程示意图。如图7所示,在数据探索模块61内执行以下步骤:
[0148]
[0149]S701、扫描原始数据文件。
[0150]S702、判断是否定义了检索字段,如果是,执行步骤S703,如果否,执行步骤S704。
[0151]S703、扫描原始数据文件根据检索字段从原始数据文件中检索并收集与检索字段相同的特定关键值。
[0152]S704、定义检索字段,返回执行步骤S701或返回执行步骤S703。
[0153]S704、对收集到的特定关键值进行分析,计算所述原始数据文件的特定关键值的值域分布。
[0154]S705、根据所述特定关键值的值域分布,结合HDFS集群中的节点数以及各节点存储资源使用情况确定所述原始数据文件的存储策略和拆分策略,然后转到数据拆分模块。
[0155]在数据拆分模块内执行以下步骤:
[0156]S706、根据拆分策略确定各个子文件的特定关键值的值域分布上下限。
[0157]S707、在所述原始数据文件中定位各个子文件的特定关键值的值域分布上下限。
[0158]S708、根据各个子文件的特定关键值值域分布上下限,对所述原始数据文件进行拆分,提取出各个子文件,然后转至数据存储模块。
[0159 ]在数据存储模块内执行以下步骤:
[0160]S709、根据所述存储策略将各个子文件分别存储在相应节点上。
[0161]为了实现对数据文件的访问,数据访问模块还可以执行以下步骤:
[0162]S710、判断原始数据文件是否需要与关系型数据库对接,如果是,执行步骤S711,如果否,结束运行。
[0163]S711、制定开发对接元数据,通过外部表的方式利用多线程将存储在HDFS集群节点中的各个子文件并发导入数据库。
[0164]S712、判断前台应用是否查询统计原始数据文件如果是,执行步骤S713,如果否,结束运行。
[ΟΙ65] S713、制定开发查询元数据,通过类sql (结构化查询语言,Structured QueryLanguage)方法实现前台应用对存储在各个节点上的子文件的查询:
[0166] S714、判断webservice是否需要访问原始数据文件,如果是,执行步骤Slll,如果否,结束运行。
[0167]S715、制定开发Webservice元数据,通过类sql方法实现Webservice对存储在各个节点上的子文件的访问,并进行结果展示。
[0168]以上为本发明的优选实施例。需要说明的是,本领域技术人员在不脱离本发明构思的前提下,对上述实施例做出的任何改进和润饰,仅在本发明的保护范围之列。
【主权项】
1.一种数据文件处理方法,其特征在于,包括: 根据定义的检索字段从原始数据文件中检索并收集与所述检索字段相同的特定关键值; 对收集到的特定关键值进行分析,计算所述原始数据文件的特定关键值的值域分布; 根据所述特定关键值的值域分布,结合HDFS集群中的节点数以及各节点存储资源使用情况确定所述原始数据文件的存储策略和拆分策略; 根据所述拆分策略将所述原始数据文件拆分为多个子文件; 根据所述存储策略将各个子文件分别存储在相应节点上。2.根据权利要求1所述的方法,其特征在于,所述根据所述拆分策略将所述原始数据文件拆分为多个子文件,具体包括: 根据拆分策略确定各个子文件的特定关键值的值域上下限; 在所述原始数据文件中定位各个子文件的特定关键值的值域上下限; 根据各个子文件的特定关键值的值域上下限,对所述原始数据文件进行拆分,提取出各个子文件。3.根据权利要求1所述的方法,其特征在于,所述对收集到的特定关键值进行分析,计算所述原始数据文件的特定关键值的值域分布,具体包括: 基于Spark的流处理技术将收集到的特定关键值抽取到内存中; 对抽取到内存中的特定关键值进行并发快速分析,计算所述原始数据文件中的特定关键值的值域分布。4.根据权利要求2所述的方法,其特征在于,所述根据各个子文件的特定关键值的值域上下限,对所述原始数据文件进行拆分,提取出各个子文件,具体包括: 利用Spark管道处理技术,根据各个子文件的特定关键值的值域上下限,对所述原始数据文件进行拆分,提取出各个子文件。5.根据权利要求1-4任一项所述的方法,其特征在于,所述根据所述存储策略将各个子文件分别存储在相应节点上后,还包括: 当原始数据文件需要与关系型数据库对接时,制定开发对接元数据,通过外部表的方式利用多线程将存储在HDFS集群节点中的各个子文件并发导入数据库。6.根据权利要求1-4任一项所述的方法,其特征在于,所述根据所述存储策略将各个子文件分别存储在相应节点上后,还包括: 当前台应用需要查询原始数据文件时,制定开发查询元数据,通过类sql方法实现前台应用对存储在各个节点上的子文件的查询。7.根据权利要求1-4任一项所述的方法,其特征在于,所述根据所述存储策略将各个子文件分别存储在相应节点上后,还包括: 当Webservice需要对原始数据文件进行访问时,制定开发Webservice元数据,通过类sql方法实现Webservice对存储在各个节点上的子文件的访问,并进行结果展示。8.根据权利要求1-4任一项所述的方法,其特征在于,所述原始数据文件为压缩格式的数据文件或非压缩格式的数据文件。9.一种数据文件处理装置,其特征在于,包括: 检索和收集单元,用于根据定义的检索字段从原始数据文件中检索并收集与所述检索字段相同的特定关键值; 分析单元,用于对收集到的特定关键值进行分析,计算所述原始数据文件的特定关键值的值域分布; 确定单元,用于根据所述特定关键值的值域分布,结合HDFS集群中的节点数以及各节点存储资源使用情况确定所述原始数据文件的存储策略和拆分策略; 拆分单元,用于根据所述拆分策略将所述原始数据文件拆分为多个子文件; 存储单元,用于根据所述存储策略将各个子文件分别存储在相应节点上。10.根据权利要求9所述的装置,其特征在于,所述拆分单元包括: 确定子单元,用于根据拆分策略确定各个子文件的特定关键值的值域上下限; 定位子单元,用于在所述原始数据文件中定位各个子文件的特定关键值的值域上下限; 提取子单元,用于根据各个子文件的特定关键值的值域上下限,对所述原始数据文件进行拆分,提取出各个子文件。11.根据权利要求9所述的装置,其特征在于,所述分析单元包括: 抽取子单元,用于基于Spark的流处理技术将收集到的特定关键值抽取到内存中; 计算子单元,用于对抽取到内存中的特定关键值进行并发快速分析,计算所述原始数据文件中的特定关键值的值域分布。12.根据权利要求10所述的装置,其特征在于,所述提取子单元包括利用Spark管道处理技术,根据各个子文件的特定关键值的值域上下限,对所述原始数据文件进行拆分,提取出各个子文件的子单兀。13.根据权利要求9-12任一项所述的装置,其特征在于,所述装置还包括: 数据库对接单元,用于当原始数据文件需要与关系型数据库对接时,制定开发对接元数据,通过外部表的方式利用多线程将存储在HDFS集群节点中的各个子文件并发导入数据库。14.根据权利要求9-12任一项所述的装置,其特征在于,所述装置还包括: 查询单元,用于当前台应用需要查询原始数据文件时,制定开发查询元数据,通过类sql方法实现前台应用对存储在各个节点上的子文件的查询。15.根据权利要求9-12任一项所述的装置,其特征在于,所述装置还包括: Webservice访问单元,用于当Webservice需要对原始数据文件进行访问时,制定开发Webservice元数据,通过类sql方法实现Webservice对存储在各个节点上的子文件的访问,并进行结果展示。16.根据权利要求8-12任一项所述的装置,其特征在于,所述原始数据文件为压缩格式的数据文件或非压缩格式的数据文件。
【文档编号】G06F17/30GK105912609SQ201610211290
【公开日】2016年8月31日
【申请日】2016年4月6日
【发明人】杨声钢, 李晓轩, 和宏涛, 金鹏
【申请人】中国农业银行股份有限公司
再多了解一些
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1