一种基于MapReduce的分布式XSLT处理方法及处理系统
技术领域
本发明涉及数据处理
技术领域
,具体涉及一种基于MapReduce的分布式XSLT处理方法及处理系统。背景技术
可扩展标记语言(Extensible Markup Language,缩写为XML),是一套定义语义标记的规则,可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。XML在Internet上面已经被广泛应用于数据交换,同时它也是一种存储应用程序数据的常用格式(比如字处理,音乐库等)。在很多情况下,当使用XML来仅仅存储数据的时候,对应的文档结构非常紧凑并且直观。
目前,可扩展标记语言(XML)广泛应用于多种领域,如Web服务和语义Web,它已经成为事实上的数据交换和表示标准。为了实现XML数据文件的自动转换和提取,W3C提出并推荐了可扩展样式语言转换技术(Extensible Stylesheet Language Transformations,缩写为XSLT)。可扩展样式语言转换(XSLT)可以将XML数据文件转换为另外的XML或其它格式,如HTML网页、纯文字等。以XSLT进行格式转换并不会变动原始的XML数据文件,而只会以现有数据产生新的内容格式。
在对XML数据文件的XSLT处理是宣告式的,基本处理的范式是模式配比,XSLT处理的模板规则定义如何处理特定XPath模式相匹配的数据节点;而针对待处理的XML数据文件,先创建对应的数据代码树,然后从数据代码树的根节点开始处理,在XSLT规则样式表中找到该节点相匹配的最佳模板规则,转换处理生成对应的结果数据,接着处理下一节点,直至对数据代码树中的各个节点进行模板规则匹配和转换处理完成后,得到对应的结果数据数,进行输出。
然而,当单个XML数据文件的数据体量较大,且XML数据文件的总量较多的情况下,就对XML数据文件的XSLT处理带来了巨大的挑战。因为,单个XML数据文件的数据体量大,则意味着其对应的数据代码树的节点数量众多、数据代码树的节点分支体量大,且每次执行模板规则时都需要读取XSLT规则样式表中所有的转换模板规则,这些数据在执行XSLT转换处理时都需要同时加载到处理内存中,这就消耗了处理系统大量的数据内存空间对处理过程中的所有数据进行数据存储;同时,由于数据代码树的节点数量众多,XSLT处理过程中需要分别对每个节点进行XSLT模板规则匹配和转换处理,也需要消耗处理系统大量的系统处理资源;加之在XML数据文件的总量较多的情况下,上述对处理系统的数据内存空间、系统处理资源的占用则更为严重,这就大大影响了XML数据文件的XSLT处理效率,甚至容易引起处理系统的数据内存和处理资源耗尽而导致系统崩溃、XSLT处理失败等问题。
因此,如何针对大批量的XML数据文件进行XSLT处理,减少对处理系统的数据内存空间和处理资源的消耗,提高处理效率和成功率,成为业界内亟待解决的技术问题。
发明内容
针对上述现有技术的不足,本发明的目的在于提供一种基于MapReduce的分布式XSLT处理方法,用以针对大批量XML数据文件的XSLT处理需求下,减少对处理系统的数据内存空间和处理资源的消耗,提高处理效率和成功率,解决现有技术针对大批量XML数据文件的XSLT处理对处理系统的数据内存空间、系统处理资源的占用严重、处理效率低等问题。
为了解决上述技术问题,本发明采用了如下的技术方案:
一种基于MapReduce的分布式XSLT处理方法,包括如下步骤:
S1、获取待处理的XML数据文件和XSLT规则样式表文件;
S2、提取XML数据文件中各个数据节点信息,得到XML数据节点信息集,记为A-Box数据集;提取XSLT规则样式表文件中的各类转换模板规则,分别为每个类别的转换模板规则创建一个模板规则文件N-XSLT,得到模板规则数据集,记为T-Box数据集;
S3、采用MapReduce框架对A-Box数据集中的各个数据节点进行批量归类整理,将每个类别的数据节点分别归类为一个数据节点子集N-XML;
S4、采用MapReduce框架分别对每个数据节点子集N-XML与各个模板规则文件N-XSLT进行模板规则匹配;
S5、采用MapReduce框架分别对每个数据节点子集N-XML中的各个XML数据节点按照相匹配的模板规则文件N-XSLT所指示的转换模板规则进行批量的XSLT转换处理,从而完成对XML数据文件的分布式XSLT转换处理。
上述基于MapReduce的分布式XSLT处理方法中,优选的,步骤S2中,对提取得到的XML数据文件中各个数据节点信息,是经过键值描述处理后再存入A-Box数据集中,其中的键值属性信息包括节点名、节点位置信息和节点类型信息,且每个数据节点信息用于映射指示XML数据文件中相应的一个数据节点。
上述基于MapReduce的分布式XSLT处理方法中,优选的,步骤S2中,为每个类别的转换模板规则所创建的模板规则文件N-XSLT,是映射指示相应类别的转换模板规则的键值描述文件,且其中的键值属性信息包括文件名、模板规则序列号和节点匹配属性。
上述基于MapReduce的分布式XSLT处理方法中,优选的,步骤S3包括:
S301、预先采用MapReduce框架建立XML数据节点类别映射Map函数和XML数据节点类别归约Reduce函数;
S302、将A-Box数据集中的每个数据节点信息分别作为XML数据节点类别映射Map函数的输入,通过XML数据节点类别映射Map函数搜索具有相同节点类型的各个数据节点,将搜索结果存入第一临时文件temp1中;
S303、XML数据节点类别映射Map函数的搜索结果作为XML数据节点类别归约Reduce函数的输入,通过XML数据节点类别归约Reduce函数将每个类别的数据节点分别归类为一个数据节点子集N-XML,并将归约结果存入第二临时文件temp2中;
S304、将入第一临时文件temp1和第二临时文件temp2中存储的数据均上传到分布式文件系统进行存储。
上述基于MapReduce的分布式XSLT处理方法中,优选的,步骤S4包括:
S401、预先采用MapReduce框架建立模板规则匹配映射Map函数和模板规则匹配归约Reduce函数;
S402、获取各个数据节点子集N-XML和各个模板规则文件N-XSLT,作为模板规则匹配映射Map函数的输入,通过模板规则匹配映射Map函数分别针对每个数据节点子集N-XML的节点类型搜索节点匹配属性相对应匹配的模板规则文件N-XSLT,将匹配结果输出给模板规则匹配归约Reduce函数;
S403、通过模板规则匹配归约Reduce函数对每个数据节点子集N-XML的节点类型相匹配的模板规则文件N-XSLT进行归约整理,确定每个数据节点子集N-XML相匹配的模板规则文件N-XSLT。
上述基于MapReduce的分布式XSLT处理方法中,优选的,步骤S5包括:
S501、预先采用MapReduce框架建立转换处理映射Map函数和转换处理归约Reduce函数;
S502、分别将各个数据节点子集N-XML及其各自相匹配的模板规则文件N-XSLT作为转换处理映射Map函数的输入,通过转换处理映射Map函数分别读取每个数据节点子集N-XML中各个数据节点的节点位置、及其相匹配的模板规则文件N-XSLT的模板规则序列号,从而定位各个XML数据节点及其相匹配的转换模板规则,将定位结果输出给转换处理归约Reduce函数;
S503、通过转换处理归约Reduce函数分别对每个XML数据节点按照相匹配的转换模板规则进行批量的XSLT转换处理,输出转换处理结果,从而完成对XML数据文件的分布式XSLT转换处理。
相应的,本发明还提供了一种基于MapReduce的分布式XSLT处理系统方案,为此,本发明采用了如下的技术方案:
一种基于MapReduce的分布式XSLT处理系统,其特征在于,包括并行数据处理层和分部署数据存储层;
所述并行数据处理层中包括XML解析模块、XSLT规则解析模块、XSLT并行处理模块和中央控制模块,由并行数据处理层中中央控制模块对其他各模块的处理工作进行协同控制;
所述XML解析模块用于提取XML数据文件中各个数据节点信息,得到XML数据节点信息集,记为A-Box数据集,并采用MapReduce框架对A-Box数据集中的各个数据节点进行批量归类整理,将每个类别的数据节点分别归类为一个数据节点子集N-XML;
所述XSLT规则解析模块用于提取XSLT规则样式表文件中的各类转换模板规则,分别为每个类别的转换模板规则创建一个模板规则文件N-XSLT,得到模板规则数据集,记为T-Box数据集;
所述XSLT并行处理模块用于采用MapReduce框架分别对每个数据节点子集N-XML与各个模板规则文件N-XSLT进行模板规则匹配,并采用MapReduce框架分别对每个数据节点子集N-XML中的各个XML数据节点按照相匹配的模板规则文件N-XSLT所指示的转换模板规则进行批量的XSLT转换处理,从而完成对XML数据文件的分布式XSLT转换处理;
所述分部署数据存储层用于执行中间数据的存储。
相比于现有技术,本发明的有益效果在于:
1、本发明基于MapReduce的分布式XSLT处理方法及处理系统,先分解提取出XML数据文件中各个数据节点并归类,以及提取出XSLT规则样式表文件中各类型的转换模板规则,然后借助MapReduce框架的批量数据处理优势,在执行XSLT转换处理前,先批量的匹配确定每一类的XML数据节点与XSLT转换模板规则之间的匹配关系,然后再分别对每个数据节点子集N-XML中的各个XML数据节点按照相匹配的模板规则文件N-XSLT所指示的转换模板规则进行批量的XSLT转换处理,完成对批量XML数据文件的分布式XSLT转换处理。
2、本发明方案通过提取XML数据文件中各个数据节点信息形成数据节点子集N-XML以及提取XSLT规则样式表文件中的转换模板规则信息生成相应的模板规则文件N-XSLT,避免了对XML数据文件的数据代码树、XSLT规则样式表中的所有转换模板规则等数据本身的大量加载而造成占用大量系统数据内存空间的问题。
3、本发明方案直接采用MapReduce框架进行各XML数据节点的批量XSLT转换处理,避免了针对每个XML数据节点逐个进行模板规则匹配、XSLT转换处理的切换处理方式,在批量XML数据文件的XSLT转换处理工况下大量减少了处理任务切换环节,加之MapReduce框架执行批量数据处理的效率优势,从而使得针对大批量XML数据文件的XSLT处理总销量得以大幅提高。
4、本发明基于MapReduce的分布式XSLT处理方法及处理系统,减少了对处理系统的数据内存空间和处理资源的消耗,提高了对大批量XML数据文件的XSLT处理效率,有效避免了对处理系统的数据内存空间、系统处理资源的占用严重的问题,有利于降低处理系统对大批量XML数据文件执行XSLT处理是导致的系统崩溃等故障事故,从而提高XML数据文件进行批量XSLT转换处理成功率。
附图说明
为了使发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步的详细描述,其中:
图1为本发明基于MapReduce的分布式XSLT处理方法的流程图。
图2为本发明基于MapReduce的分布式XSLT处理方法的一种算法流结构示意图。
图3为实现本发明方法的一种基于MapReduce的分布式XSLT处理系统构架的结构图。
具体实施方式
下面结合附图对本发明作进一步的详细说明。
如图1和图2所示,本发明提供了一种基于MapReduce的分布式XSLT处理方法,包括如下步骤:
S1、获取待处理的XML数据文件和XSLT规则样式表文件;
S2、提取XML数据文件中各个数据节点信息,得到XML数据节点信息集,记为A-Box数据集;提取XSLT规则样式表文件中的各类转换模板规则,分别为每个类别的转换模板规则创建一个模板规则文件N-XSLT,得到模板规则数据集,记为T-Box数据集;
S3、采用MapReduce框架对A-Box数据集中的各个数据节点进行批量归类整理,将每个类别的数据节点分别归类为一个数据节点子集N-XML;
S4、采用MapReduce框架分别对每个数据节点子集N-XML与各个模板规则文件N-XSLT进行模板规则匹配;
S5、采用MapReduce框架分别对每个数据节点子集N-XML中的各个XML数据节点按照相匹配的模板规则文件N-XSLT所指示的转换模板规则进行批量的XSLT转换处理,从而完成对XML数据文件的分布式XSLT转换处理。
本发明基于MapReduce的分布式XSLT处理方法,其处理思路在于,先分解提取出XML数据文件中各个数据节点并归类,以及提取出XSLT规则样式表文件中各类型的转换模板规则,然后借助MapReduce框架的批量数据处理优势,在执行XSLT转换处理前,先批量的匹配确定每一类的XML数据节点与XSLT转换模板规则之间的匹配关系,然后再分别对每个数据节点子集N-XML中的各个XML数据节点按照相匹配的模板规则文件N-XSLT所指示的转换模板规则进行批量的XSLT转换处理,完成对批量XML数据文件的分布式XSLT转换处理。
相比于现有的XSLT转换处理方法需要将所有处理过程数据同时加载到系统内存导致占用大量系统数据内存空间而言,本发明方法通过提取XML数据文件中各个数据节点信息形成数据节点子集N-XML以及提取XSLT规则样式表文件中的转换模板规则信息生成相应的模板规则文件N-XSLT,在采用MapReduce框架进行XML数据节点与XSLT转换模板规则之间的匹配处理中,本质上是执行XML数据节点信息与XSLT转换模板规则信息之间的匹配,避免了对XML数据文件的数据代码树、XSLT规则样式表中的所有转换模板规则等数据本身的加载,而在完成匹配后,针对每个XML数据节点的XSLT转换处理时也仅需调取XML数据节点及其匹配的XSLT转换模板规则的局部数据,而无需同时提取整个XML数据文件的数据代码树以及XSLT规则样式表中的所有转换模板规则数据,避免了同时调取大量数据占用大量系统数据内存空间的问题。
另一方面,由于是在完成XML数据节点与XSLT转换模板规则之间的匹配处理后,直接采用MapReduce框架进行各XML数据节点的批量XSLT转换处理,避免了针对每个XML数据节点逐个进行模板规则匹配、XSLT转换处理的切换处理方式,在批量XML数据文件的XSLT转换处理工况下大量减少了处理任务切换环节,加之MapReduce框架执行批量数据处理的效率优势,从而使得针对大批量XML数据文件的XSLT处理总销量得以大幅提高。
为了更好的体现本发明基于MapReduce的分布式XSLT处理方法的技术优势,下面对本发明方案加以展开说明。
本发明基于MapReduce的分布式XSLT处理方法,在具体应用实施时可通过构建如图3所示的一套分布式XSLT处理系统构架来实现,例如可采用一套基于Hadoop的云计算平台来实施。该系统构架包括并行数据处理层和分部署数据存储层。并行数据处理层中包括XML解析模块、XSLT规则解析模块、XSLT并行处理模块和中央控制模块;在获得待处理的XML数据文件和XSLT规则样式表文件后,由并行数据处理层中中央控制模块对其他各模块的处理工作进行协同控制;XML解析模块用于提取XML数据文件中各个数据节点信息,得到XML数据节点信息集,记为A-Box数据集,并采用MapReduce框架对A-Box数据集中的各个数据节点进行批量归类整理,将每个类别的数据节点分别归类为一个数据节点子集N-XML;XSLT规则解析模块用于提取XSLT规则样式表文件中的各类转换模板规则,分别为每个类别的转换模板规则创建一个模板规则文件N-XSLT,得到模板规则数据集,记为T-Box数据集;XSLT并行处理模块用于采用MapReduce框架分别对每个数据节点子集N-XML与各个模板规则文件N-XSLT进行模板规则匹配,并采用MapReduce框架分别对每个数据节点子集N-XML中的各个XML数据节点按照相匹配的模板规则文件N-XSLT所指示的转换模板规则进行批量的XSLT转换处理,从而完成对XML数据文件的分布式XSLT转换处理。分部署数据存储层可采用基于Hadoop的分布式文件系统HDFS来用以执行中间数据的存储。HDFS(Hadoop DistributedFile System,基于Hadoop的分布式文件系统)是Hadoop分布式系统的一个组件,是一个高度容错性的系统,适合部署在廉价的机器上;HDFS能提供高吞吐量的数据访问,非常适合大规模数据集上的应用;并且HDFS放宽了一部分POSIX约束,来实现流式读取文件系统数据的目的。
在采用分布式XSLT处理系统执行本发明方法时,具体包括如下执行步骤:
S1、获取待处理的XML数据文件和XSLT规则样式表文件。
这些原始数据可以是预先已准备好的。要处理的XML数据文件通常由许多大小不同的XML文档组成,每个文档可以建模为有根的有序树,因为它有一个根节点和一些嵌套的子节点。辅助节点比根节点更重要,因此对于辅助XML节点及其子节点,将执行XSLT模板命令以生成新内容。此外,虽然MapReduce框架已经提供了一些关于XML数据文件分割和并行计算的简单数据模型和接口,但它们不能很好地应用于基于XSLT的XML数据文件转换的特殊情况。首先,当处理相同大小的数据时,参与计算的节点越多,模型运行速度就越快,然而,运行时间不会因为框架中的资源消耗而持续减少。其次,在一定数量的节点中处理不同大小的数据时,响应时间明显随着XML数据文件的增长而增加。更重要的是,响应时间增长的速度慢于数据增长的速度。也就是说,本发明的模型在处理大规模XML数据文件时具有更多的优势。
S2、提取XML数据文件中各个数据节点信息,得到XML数据节点信息集,记为A-Box数据集;提取XSLT规则样式表文件中的各类转换模板规则,分别为每个类别的转换模板规则创建一个模板规则文件N-XSLT,得到模板规则数据集,记为T-Box数据集。
本发明方案中,把原始数据处理成A-Box数据集和T-Box数据集两个集合,相当于对原始数据进行一次数据筛选和信息提取的预处理,目的是更有利于后续工作的进行。
步骤S2中,对提取得到的XML数据文件中各个数据节点信息,是经过键值描述处理后再存入A-Box数据集中,其中的键值属性信息包括节点名、节点位置信息和节点类型信息,且每个数据节点信息用于映射指示XML数据文件中相应的一个数据节点。如果XML数据文不经过预处理直接输入MapReduce框架执行处理,那么就会有大量噪声数据干扰,导致后续处理效率不高,并且算法运行时间以及所需的硬件资源也会增加,因此,提取XML数据文件中各个数据节点信息的预处理环节是整个框架中必不可少的一步。而提取XML数据文件中各个数据节点信息后,通过键值描述处理,也是为了后续能够依据这些键值属性信息直接利用数据节点信息进行匹配处理,而避免直接调用数据节点本身。具体而言,A-Box数据集的数据形式可以视为是一些断言数据的集合,是一个以A(x, y)的形式存在的有限个断言集合,其中,描述逻辑知识库是一个解释对A(x, y),其中解释域x包含一组非空的对象和解释函数y。将每个概念名称a映射到域x的一个子集,将每个节点r映射到域y上的二进制关系之中。一个满足 A-Box中所有断言的解释可被称为A的模型。如果存在这样的模型,那么A-Box是一致的,否则就称之为不一致。如果是一致的,就保留该数据;如果不一致就丢弃该数据,这样可以提高原始数据的质量,为后续的处理提高效率。
步骤S2中,为每个类别的转换模板规则所创建的模板规则文件N-XSLT,是映射指示相应类别的转换模板规则的键值描述文件,且其中的键值属性信息包括文件名、模板规则序列号和节点匹配属性。这里创建模板规则文件N-XSLT,目的也是通过键值描述处理,以便后续能够依据这些键值属性信息直接利用转换模板规则信息进行匹配处理,而避免直接调用XSLT规则样式表文件数据本身。其具体的处理方式可以采用如下处理流程:
S201、为XSLT规则样式表文件中的每个模板规则节点创建一个N-XSLT规则样式表文件,并向每个N-XSLT规则样式表文件分配序列号、文件名和匹配属性;
S202、基于N-XSLT规则样式表文件建立并初始化NXSLT-Cloud模型,并赋予NXSLT-Cloud模型操作参数(Operator)、标记位置参数(Target Location)和连接参数(Content);
S203、将每个N-XSLT规则样式表文件得到的数据输出到T-Box文本文件中,然后将T-Box文件上传到分布式文件系统进行存储。
由此得到的每个模板规则文件N-XSLT的具体形式可表示为:N-XSLT=<源文件,序列号,命令>;其中第一个参数“源文件”用于指定源XSLT规则样式表文件名,第二个参数“序列号”是基于深度优先策略中模板规则的序列号,第三个参数“命令”用于存储整个模板规则的命令,用于匹配目标N-XSLT节点。模型与一些常用XSLT命令之间的映射关系如表1所示),然后将T-Box文件上传到分布式文件系统进行存储。
表1
S3、采用MapReduce框架对A-Box数据集中的各个数据节点进行批量归类整理,将每个类别的数据节点分别归类为一个数据节点子集N-XML。
本发明方案将相同类别的XML数据节点信息进行归集,从而可以在后续处理中,针对每个类别的XML数据节点统一进行XSLT模板规则匹配,且在这里的归类整理处理也采用了MapReduce框架,以提升效率。
MapReduce框架是一种编程模型,用于大规模数据集的并行运算。概念Map(映射)和Reduce(归约),是它们的主要思想,是从函数式编程语言里借来的,还有从矢量编程语言里借来的特性。它极大地方便了编程人员在不会分布式并行编程的情况下,将自己的程序运行在分布式系统上。MapReduce框架的实现过程是指定一个Map(映射)函数,用来把一组键值对映射成一组新的键值对,指定Reduce(归约)函数,用来保证所有映射的键值对中的每一个共享相同的键组,而后批量执行处理。简单说来,一个映射函数就是对一些独立元素组成的概念上的列表的每一个元素进行指定的操作。事实上,每个元素都是被独立操作的,而原始列表没有被更改,因为这里创建了一个新的列表来保存新的处理结果。
不过,通常的MapReduce框架算法处理过程,是将Map(映射)函数处理与Reduce(归约)函数处理分配为两个任务job1和job2来执行,一般是按顺序先初始化第一任务job1执行Map函数处理后,再初始化第二任务job2执行Reduce函数,但是这样的效率并不很高,且较为浪费计算资源,因为处理步骤是线性的,Map函数的中间数据和处理结果需要全部在内存中加载准备给Reduce函数来处理,因此内存占用也较大。
为此,本发明进行了改进,步骤S3采用了如下的处理方法:
S301、预先采用MapReduce框架建立XML数据节点类别映射Map函数和XML数据节点类别归约Reduce函数;其中,XML数据节点类别映射Map函数用于从A-Box数据集中的每个数据节点信息搜索具有相同节点类型的各个数据节点;XML数据节点类别归约Reduce函数用于将每个类别的数据节点分别归类为一个数据节点子集N-XML;
S302、将A-Box数据集中的每个数据节点信息分别作为XML数据节点类别映射Map函数的输入,通过XML数据节点类别映射Map函数搜索具有相同节点类型的各个数据节点,将搜索结果存入第一临时文件temp1中;
S303、XML数据节点类别映射Map函数的搜索结果作为XML数据节点类别归约Reduce函数的输入,通过XML数据节点类别归约Reduce函数将每个类别的数据节点分别归类为一个数据节点子集N-XML,并将归约结果存入第二临时文件temp2中;
S304、将入第一临时文件temp1和第二临时文件temp2中存储的数据均上传到分布式文件系统进行存储。
通过上述流程可以看到,在采用MapReduce框架执行XML数据节点批量归类整理的过程中,以A-Box数据集作为输入,可以初始化第一任务job1,执行XML数据节点类别映射Map函数,结果保存在第一临时文件temp1中;并且,可以同时初始化第二任务job2,从第一临时文件temp1中读取Map函数的处理结果并行执行XML数据节点类别归约Reduce函数,将结果保存在第二临时文件temp2中。因为XML数据节点类别映射Map函数每搜索到一个相同节点类型的数据节点,XML数据节点类别归约Reduce函数就可以将该对应的数据节点信息归约整理到相应数据节点类别对应的一个数据节点子集N-XML中,从而通过这样的并行处理以提高处理效率;同时,已经完成数据节点信息归约整理的相关数据信息也可以在处理过程中从内存数据中加以释放,减少对内存空间的占用。
S4、采用MapReduce框架分别对每个数据节点子集N-XML与各个模板规则文件N-XSLT进行模板规则匹配。
本发明方案中,由于数据节点子集N-XML是通过提取XML数据文件中各个数据节点信息形成的,而模板规则文件N-XSLT是通过提取XSLT规则样式表文件中的转换模板规则信息生成的,因此,在该步骤采用MapReduce框架进行XML数据节点与XSLT转换模板规则之间的匹配处理中,本质上是执行XML数据节点信息与XSLT转换模板规则信息之间的匹配,避免了对XML数据文件的数据代码树、XSLT规则样式表中的所有转换模板规则等数据本身的加载,而在完成匹配后,针对每个XML数据节点的XSLT转换处理时也仅需调取XML数据节点及其匹配的XSLT转换模板规则的局部数据,而无需同时提取整个XML数据文件的数据代码树以及XSLT规则样式表中的所有转换模板规则数据,避免了同时调取大量数据占用大量系统数据内存空间的问题。
具体处理时,步骤S4包括:
S401、预先采用MapReduce框架建立模板规则匹配映射Map函数和模板规则匹配归约Reduce函数;其中,模板规则匹配映射Map函数用于分别针对每个数据节点子集N-XML的节点类型从T-Box数据集中搜索节点匹配属性相对应匹配的模板规则文件N-XSLT;模板规则匹配归约Reduce函数用于对每个数据节点子集N-XML的节点类型相匹配的模板规则文件N-XSLT进行归约整理;
S402、获取各个数据节点子集N-XML和各个模板规则文件N-XSLT,作为模板规则匹配映射Map函数的输入,通过模板规则匹配映射Map函数分别针对每个数据节点子集N-XML的节点类型搜索节点匹配属性相对应匹配的模板规则文件N-XSLT,将匹配结果输出给模板规则匹配归约Reduce函数;
S403、通过模板规则匹配归约Reduce函数对每个数据节点子集N-XML的节点类型相匹配的模板规则文件N-XSLT进行归约整理,确定每个数据节点子集N-XML相匹配的模板规则文件N-XSLT。
上述处理过程中,可以分配第三任务job3来执行模板规则匹配映射Map函数处理,可通过从第一临时文件temp1和temp2第二临时文件中获取各个数据节点子集N-XML作为输入,另外从分布式文件系统中获得T-Box数据集中的各个模板规则文件N-XSLT,同时初始化job3,并执行模板规则匹配映射Map函数。这一步主要是对步骤S2和S3得到的输出进行匹配处理,数据处理的关键在于N-XML数据文件和N-XSLT数据的对比匹配,如果能按照预定规则匹配,则说明我们的处理是有效的,可以继续进行下一步的模板规则匹配归约Reduce函数处理。在每一次作业中,模板规则匹配映射Map函数接受一批数据节点子集N-XML文件作为输入;如果存在匹配的模板规则文件N-XSLT,则将数据节点子集N-XML的键值对与相匹配的模板规则文件N-XML的文件名和N-XSLT的ID组合构造成一个新的中间键值对;否则,由于XSLT规则可以过滤上下文,所以什么都不会输出;最后,在MapReduce框架中对所有中间键值对进行排序,并将具有相同键的值发送给模板规则匹配归约Reduce函数,由模板规则匹配归约Reduce函数对每个数据节点子集N-XML的节点类型相匹配的模板规则文件N-XSLT进行归约整理,确定每个数据节点子集N-XML相匹配的模板规则文件N-XSLT。
S5、采用MapReduce框架分别对每个数据节点子集N-XML中的各个XML数据节点按照相匹配的模板规则文件N-XSLT所指示的转换模板规则进行批量的XSLT转换处理,从而完成对XML数据文件的分布式XSLT转换处理。
本发明方案中,采用MapReduce框架进行各XML数据节点的批量XSLT转换处理,避免了针对每个XML数据节点逐个进行模板规则匹配、XSLT转换处理的切换处理方式,在批量XML数据文件的XSLT转换处理工况下大量减少了处理任务切换环节,加之MapReduce框架执行批量数据处理的效率优势,从而使得针对大批量XML数据文件的XSLT处理总销量得以大幅提高。
具体处理时,步骤S5包括:
S501、预先采用MapReduce框架建立转换处理映射Map函数和转换处理归约Reduce函数;其中,转换处理映射Map函数用于分别读取每个数据节点子集N-XML中各个数据节点的节点位置、及其相匹配的模板规则文件N-XSLT的模板规则序列号,从而定位各个XML数据节点及其相匹配的转换模板规则;转换处理归约Reduce函数用于分别对每个XML数据节点按照相匹配的转换模板规则进行批量的XSLT转换处理;
S502、分别将各个数据节点子集N-XML及其各自相匹配的模板规则文件N-XSLT作为转换处理映射Map函数的输入,通过转换处理映射Map函数分别读取每个数据节点子集N-XML中各个数据节点的节点位置、及其相匹配的模板规则文件N-XSLT的模板规则序列号,从而定位各个XML数据节点及其相匹配的转换模板规则,将定位结果输出给转换处理归约Reduce函数;
S503、通过转换处理归约Reduce函数分别对每个XML数据节点按照相匹配的转换模板规则进行批量的XSLT转换处理,输出转换处理结果,从而完成对XML数据文件的分布式XSLT转换处理。
综上所述,可以看到,本发明基于MapReduce的分布式XSLT处理方法及处理系统,减少了对处理系统的数据内存空间和处理资源的消耗,提高了对大批量XML数据文件的XSLT处理效率,有效避免了对处理系统的数据内存空间、系统处理资源的占用严重的问题,有利于降低处理系统对大批量XML数据文件执行XSLT处理是导致的系统崩溃等故障事故,从而提高XML数据文件进行批量XSLT转换处理成功率。
最后说明的是,以上实施例仅用以说明本发明的技术方案而非限制,尽管通过参照本发明的优选实施例已经对本发明进行了描述,但本领域的普通技术人员应当理解,可以在形式上和细节上对其作出各种各样的改变,而不偏离所附权利要求书所限定的本发明的精神和范围。
- 上一篇:石墨接头机器人自动装卡簧、装栓机
- 下一篇:电力机车检修记录管理系统