一种半结构化数据快速联合处理的方法及系统的利记博彩app
【专利摘要】本发明公开了一种半结构化数据快速联合处理的方法及系统,其中,所述方法包括:从待处理数据中提取半结构化数据,将所述半结构化数据区分为用结构化数据+非结构化数据模式描述的数据;对用所述结构化数据+非结构化数据模式描述的数据采用MPP+HADOOP混合体系进行处理。
【专利说明】
一种半结构化数据快速联合处理的方法及系统
技术领域
[0001]本发明涉及数据处理技术,尤其涉及一种半结构化数据快速联合处理的方法及系统。
【背景技术】
[0002]本申请发明人在实现本申请实施例技术方案的过程中,至少发现相关技术中存在如下技术问题:
[0003]大数据时代,数据呈现4V特点,即:容量大、种类多、大规模和有价值的信息少,尤其是种类比较多。众所周知,传统的RDMBS主要处理结构化数据,如目前的Oracle等数据库系统,但是其无法处理大数据时代的半结构、非结构化数据,如Twitter聊天记录,微博上的沟通信息等。
[0004]对于非结构化的大数据,目前基本上采用Hadoop体系进行处理,如Hive、Hbase、HDFS等,而结构化数据基本上采用基于Share-Nothing的MPP新型数据库处理,目前技术比较成熟。
[0005]而半结构化的大数据处理,目前基本上采用非结构化的数据处理技术,如Hadoop进行处理,主要的方法包括HDFS、Hive、Hbase以及MapReduce等,其中HDFS是大数据体系下的分布式文件系统,而Hive是类SQL技术的数据仓库系统,Hbase是非结构化的NoSQL数据库,MapReduce是大规模并行计算框架。
[0006]对于Hadoop的体系结构而言,如图1所示,Hadoop的体系中,Hbase是大数据体系中处理半结构化数据、非结构化数据的核心系统之一。Hbase不同于一般的关系数据库,其不遵循ACID要求,而采用NoSQL技术,因此它是一个适合于非结构化数据存储的数据库?’另一个不同的是Hbase基于列的而不是基于行的模式。而且其只能表示很简单的键-数据的映射关系。
[0007]目前处理非结构化、半结构化的NoSQL数据库不仅包括Hbase,还有目前比较成熟的 MongoDB、Neo4j\ MemcacheDB、CouchDB、Cassandra 等等。
[0008]现有技术存在的缺点为:目前的RDBMS以及MPP数据库技术无法处理半结构化数据,只能采用NoSQL数据库技术,如Hadoop体系下的Hbase等。但是,第一,半结构化数据在结构化方面依然存在较强的规律性,很多半结构化数据依然上可以理解为结构化数据+非结构化数据;第二,传统的RDBMS和MPP数据库,尤其MPP数据库在结构化数据处理、OLTP事务处理,以及查询类操作等方面具有极强的技术优势;第三,半结构化数据在具体操作中存在较多的查询、删除、修改等操作,而且具有反复数据修改等操作,这些是Hadoop下HDFS分布式文件系统和Hbase所不擅长的;第四,Hbase的基础是HDFS分布式文件系统,其主要优点是适合处理超大文件、一次写入多次读取、高可扩性,但是其问题是不适合低延迟数据访问、无法高效存储大量小文件、不支持多用户写入及任意修改文件;第五,Hbase系统的主要问题是其基于HDFS系统构建,HDFS的问题必然导致Hbase在速度、小文件、数据修改等方面存在问题。但是其优点是采用列存储、Key-Value等技术,适合非结构化数据的查询和处理。
[0009]综上所述,目前的NoSQL技术,尤其Hadoop体系下的HDFS和Hbase在处理半结构数据方面存在较多的问题,其更加适合非结构化数据,尤其是大规模的非结构化数据。同时,MPP技术和系统更加适合处理结构化数据、尤其小规模的结构化数据,也就是说,采用现有技术,对于半结构数据方面的处理都不太适合的,存在比较多的问题。
【发明内容】
[0010]有鉴于此,本发明实施例希望提供一种半结构化数据快速联合处理的方法及系统,至少解决了现有技术存在的问题。
[0011]本发明实施例的技术方案是这样实现的:
[0012]本发明实施例的一种半结构化数据快速联合处理的方法,所述方法包括:
[0013]从待处理数据中提取半结构化数据,将所述半结构化数据区分为用结构化数据+非结构化数据模式描述的数据;
[0014]对用所述结构化数据+非结构化数据模式描述的数据采用MPP+HAD00P混合体系进行处理。
[0015]上述方案中,对于写操作请求,所述将所述半结构化数据区分为用结构化数据+非结构化数据模式描述的数据,包括:
[0016]启动数据处理引擎,所述数据处理引擎作为系统架构的中间层,用于对位于所述数据处理引擎上层应用系统的应用数据进行分析,并调用位于所述数据处理引擎下层的所述MPP+HAD00P混合体系进行数据处理;
[0017]通过所述数据处理引擎对所述半结构化数据进行分拆,得到所述结构化数据和所述非结构化数据;
[0018]相应的,所述对用所述结构化数据+非结构化数据模式描述的数据采用MPP+HAD00P混合体系进行处理,包括:
[0019]所述数据处理引擎调用所述MPP+HAD00P混合体系中的MPP数据库接口,将所述结构化数据存储到MPP数据库中并交由MPP数据库单独处理所述结构化数据;
[0020]所述数据处理弓I擎调用所述MPP+HAD00P混合体系中的HAD00P Hbase接口,将所述非结构化数据存储到Hbase数据库中并交由Hbase数据库单独处理所述非结构化数据。
[0021]上述方案中,所述通过所述数据处理引擎对所述半结构化数据进行分拆,得到所述结构化数据和所述非结构化数据,包括:
[0022]列出所述半结构化数据中所有的分拆行键,按照行标识符和列标识符创建得到的新的非结构化文件和结构化文件;
[0023]对于所有需要分拆的行继续处理,将所有的分拆行中的所有列读出放到新的非结构化文件,并存放相关的元数据信息到元数据处理模块;
[0024]将所有的其他行读出放到新的结构化文件,并存放相关的元数据信息到元数据处理模块。
[0025]上述方案中,对于读操作请求,所述方法还包括:
[0026]所述数据处理引擎调用所述MPP+HAD00P混合体系中的MPP数据库接口,将所述结构化数据从MPP数据库中读取出来;
[0027]所述数据处理弓I擎调用所述MPP+HAD00P混合体系中的HADOOP Hbase接口,将所述非结构化数据从Hbase数据库中读取出来;
[0028]将所述结构化数据和所述非结构化数据组合还原为所述半结构化数据。
[0029]上述方案中,所述将所述结构化数据和所述非结构化数据组合还原为所述半结构化数据,包括:
[0030]读取Hbase中的非结构化数据;
[0031]读取MPP中的结构化数据,并得到所有的行数;
[0032]将结构化数据按照行标识符和列标识符全部存放到非结构化数据中,实现新的非结构化数据的封装。
[0033]上述方案中,所述方法还包括:在执行所述分拆或所述组合之前,判断当前的数据库和表的类型,如果是非结构化数据则提示进行分拆处理;如果是半结构化数据,则提示需要从所述MPP数据库和所述Hbase数据库中进行数据分别读取以进行组合处理。
[0034]本发明实施例的一种半结构化数据快速联合处理的系统,所述系统包括:
[0035]数据处理引擎,用于从待处理数据中提取半结构化数据,将所述半结构化数据区分为用结构化数据+非结构化数据模式描述的数据;调用MPP+HAD00P系统层,使得能对用所述结构化数据+非结构化数据模式描述的数据采用MPP+HAD00P混合体系进行处理;
[0036]上层应用系统层,用于为所述数据处理引擎提供所述待处理数据;
[0037]MPP+HAD00P系统层,用于接受所述数据处理引擎的调度,对所述结构化数据+非结构化数据模式描述的数据采用MPP+HAD00P混合体系进行处理。
[0038]上述方案中,所述数据处理引擎,进一步包括:
[0039]写操作处理引擎,用于对于写操作请求的情况下,对所述半结构化数据进行分拆,得到所述结构化数据和所述非结构化数据,并分别调用MPP数据库接口和HAD00P Hbase接口触发MPP操作处理模块和Hbase操作处理模块进行数据处理;
[0040]MPP操作处理模块,用于接受所述写操作处理引擎的调用,将所述结构化数据存储到MPP数据库中并交由MPP数据库单独处理所述结构化数据;
[0041]Hbase操作处理模块,用于接受所述写操作处理引擎的调用,将所述非结构化数据存储到Hbase数据库中并交由Hbase数据库单独处理所述非结构化数据。
[0042]上述方案中,所述写操作处理引擎,进一步用于:
[0043]列出所述半结构化数据中所有的分拆行键,按照行标识符和列标识符创建得到的新的非结构化文件和结构化文件;
[0044]对于所有需要分拆的行继续处理,将所有的分拆行中的所有列读出放到新的非结构化文件,并存放相关的元数据信息到元数据处理模块;
[0045]将所有的其他行读出放到新的结构化文件,并存放相关的元数据信息到元数据处理模块。
[0046]上述方案中,所述数据处理引擎,进一步包括:
[0047]读操作处理引擎,用于对于读操作请求的情况下,分别调用MPP数据库接口和HAD00P Hbase接口触发MPP操作处理模块和Hbase操作处理模块进行数据处理;
[0048]所述MPP操作处理模块,进一步用于接受所述读操作处理引擎的调用,将所述结构化数据从MPP数据库中读取出来,并交由所述读操作处理引擎;
[0049]所述Hbase操作处理模块,进一步用于接受所述读操作处理引擎的调用,将所述非结构化数据从Hbase数据库中读取出来,并交由所述读操作处理引擎;
[0050]所述读操作处理引擎,还用于将所述结构化数据和所述非结构化数据组合还原为所述半结构化数据。
[0051]上述方案中,所述读操作处理引擎,进一步用于:
[0052]读取Hbase中的非结构化数据;
[0053]读取MPP中的结构化数据,并得到所有的行数;
[0054]将结构化数据按照行标识符和列标识符全部存放到非结构化数据中,实现新的非结构化数据的封装。
[0055]上述方案中,所述系统还包括:
[0056]元数据管理模块,用于在执行所述分拆或所述组合之前,判断当前的数据库和表的类型,如果是非结构化数据则提示所述写操作处理引擎进行分拆处理;如果是半结构化数据,则提示需要从所述MPP数据库和所述Hbase数据库中进行数据分别读取,以提供给所述读操作处理引擎进行组合处理。
[0057]本发明实施例的半结构化数据快速联合处理的方法,包括:从待处理数据中提取半结构化数据,将所述半结构化数据区分为用结构化数据+非结构化数据模式描述的数据;对用所述结构化数据+非结构化数据模式描述的数据采用MPP+HAD00P混合体系进行处理。
[0058]采用本发明实施例,将所述半结构化数据区分为结构化数据和非结构化数据进行描述,利用MPP和HADOOP各自的优势,采用MPP+HAD00P混合体系进行数据处理,能解决现有技术存在的问题。
【附图说明】
[0059]图1为现有Hadoop的体系结构示意图;
[0060]图2为本发明实施例的方法流程示意图;
[0061]图3为应用本发明实施例的基于MPP和Hadoop技术的半结构化数据快速联合处理场景的系统结构示意图;
[0062]图4为应用本发明实施例的基于MPP和Hadoop技术的半结构化数据快速联合处理场景的整个系统工作流程图;
[0063]图5为应用本发明实施例的半结构化数据处理引擎的示意图。
【具体实施方式】
[0064]下面结合附图对技术方案的实施作进一步的详细描述。
[0065]本发明实施例的一种半结构化数据快速联合处理的方法,如图2所示,所述方法包括:
[0066]步骤101、从待处理数据中提取半结构化数据,将所述半结构化数据区分为用结构化数据+非结构化数据模式描述的数据;
[0067]步骤102、对用所述结构化数据+非结构化数据模式描述的数据采用MPP+HAD00P混合体系进行处理。
[0068]在本发明实施例一实施方式中,一个具体实现为:对于写操作请求,所述将所述半结构化数据区分为用结构化数据+非结构化数据模式描述的数据,包括:
[0069]启动数据处理引擎,所述数据处理引擎作为系统架构的中间层,用于对位于所述数据处理引擎上层应用系统的应用数据进行分析,并调用位于所述数据处理引擎下层的所述MPP+HAD00P混合体系进行数据处理;通过所述数据处理引擎对所述半结构化数据进行分拆,得到所述结构化数据和所述非结构化数据。
[0070]相应的,所述对用所述结构化数据+非结构化数据模式描述的数据采用MPP+HAD00P混合体系进行处理,包括:
[0071 ] 所述数据处理引擎调用所述MPP+HAD00P混合体系中的MPP数据库接口,将所述结构化数据存储到MPP数据库中并交由MPP数据库单独处理所述结构化数据;所述数据处理引擎调用所述MPP+HAD00P混合体系中的HAD00P Hbase接口,将所述非结构化数据存储到Hbase数据库中并交由Hbase数据库单独处理所述非结构化数据。
[0072]在本发明实施例一实施方式中,一个具体实现为:所述通过所述数据处理引擎对所述半结构化数据进行分拆,得到所述结构化数据和所述非结构化数据,包括:
[0073]列出所述半结构化数据中所有的分拆行键,按照行标识符和列标识符创建得到的新的非结构化文件和结构化文件;对于所有需要分拆的行继续处理,将所有的分拆行中的所有列读出放到新的非结构化文件,并存放相关的元数据信息到元数据处理模块;将所有的其他行读出放到新的结构化文件,并存放相关的元数据信息到元数据处理模块。
[0074]在本发明实施例一实施方式中,一个具体实现为:对于读操作请求,所述方法还包括:
[0075]所述数据处理引擎调用所述MPP+HAD00P混合体系中的MPP数据库接口,将所述结构化数据从MPP数据库中读取出来;所述数据处理弓I擎调用所述MPP+HAD00P混合体系中的HAD00P Hbase接口,将所述非结构化数据从Hbase数据库中读取出来;将所述结构化数据和所述非结构化数据组合还原为所述半结构化数据。
[0076]在本发明实施例一实施方式中,一个具体实现为:所述将所述结构化数据和所述非结构化数据组合还原为所述半结构化数据,包括:
[0077]读取Hbase中的非结构化数据;读取MPP中的结构化数据,并得到所有的行数;将结构化数据按照行标识符和列标识符全部存放到非结构化数据中,实现新的非结构化数据的封装。
[0078]在本发明实施例一实施方式中,一个具体实现为:所述方法还包括:在执行所述分拆或所述组合之前,判断当前的数据库和表的类型,如果是非结构化数据则提示进行分拆处理;如果是半结构化数据,则提示需要从所述MPP数据库和所述Hbase数据库中进行数据分别读取以进行组合处理。
[0079]本发明实施例的一种半结构化数据快速联合处理的系统,所述系统包括:
[0080]数据处理引擎,用于从待处理数据中提取半结构化数据,将所述半结构化数据区分为用结构化数据+非结构化数据模式描述的数据;调用MPP+HAD00P系统层,使得能对用所述结构化数据+非结构化数据模式描述的数据采用MPP+HAD00P混合体系进行处理;
[0081]上层应用系统层,用于为所述数据处理引擎提供所述待处理数据;
[0082]MPP+HAD00P系统层,用于接受所述数据处理引擎的调度,对所述结构化数据+非结构化数据模式描述的数据采用MPP+HADOOP混合体系进行处理。
[0083]在本发明实施例一实施方式中,一个具体实现为:所述数据处理引擎,进一步包括:
[0084]写操作处理引擎,用于对于写操作请求的情况下,对所述半结构化数据进行分拆,得到所述结构化数据和所述非结构化数据,并分别调用MPP数据库接口和HADOOP Hbase接口触发MPP操作处理模块和Hbase操作处理模块进行数据处理;
[0085]MPP操作处理模块,用于接受所述写操作处理引擎的调用,将所述结构化数据存储到MPP数据库中并交由MPP数据库单独处理所述结构化数据;
[0086]Hbase操作处理模块,用于接受所述写操作处理引擎的调用,将所述非结构化数据存储到Hbase数据库中并交由Hbase数据库单独处理所述非结构化数据。
[0087]在本发明实施例一实施方式中,一个具体实现为:所述写操作处理引擎,进一步用于:
[0088]列出所述半结构化数据中所有的分拆行键,按照行标识符和列标识符创建得到的新的非结构化文件和结构化文件;
[0089]对于所有需要分拆的行继续处理,将所有的分拆行中的所有列读出放到新的非结构化文件,并存放相关的元数据信息到元数据处理模块;
[0090]将所有的其他行读出放到新的结构化文件,并存放相关的元数据信息到元数据处理模块。
[0091]在本发明实施例一实施方式中,一个具体实现为:所述数据处理引擎,进一步包括:
[0092]读操作处理引擎,用于对于读操作请求的情况下,分别调用MPP数据库接口和HADOOP Hbase接口触发MPP操作处理模块和Hbase操作处理模块进行数据处理;
[0093]所述MPP操作处理模块,进一步用于接受所述读操作处理引擎的调用,将所述结构化数据从MPP数据库中读取出来,并交由所述读操作处理引擎;
[0094]所述Hbase操作处理模块,进一步用于接受所述读操作处理引擎的调用,将所述非结构化数据从Hbase数据库中读取出来,并交由所述读操作处理引擎;
[0095]所述读操作处理引擎,还用于将所述结构化数据和所述非结构化数据组合还原为所述半结构化数据。
[0096]在本发明实施例一实施方式中,一个具体实现为:所述读操作处理引擎,进一步用于:
[0097]读取Hbase中的非结构化数据;
[0098]读取MPP中的结构化数据,并得到所有的行数;
[0099]将结构化数据按照行标识符和列标识符全部存放到非结构化数据中,实现新的非结构化数据的封装。
[0100]在本发明实施例一实施方式中,一个具体实现为:所述系统还包括:
[0101]元数据管理模块,用于在执行所述分拆或所述组合之前,判断当前的数据库和表的类型,如果是非结构化数据则提示所述写操作处理引擎进行分拆处理;如果是半结构化数据,则提示需要从所述MPP数据库和所述Hbase数据库中进行数据分别读取,以提供给所述读操作处理引擎进行组合处理。
[0102]以下用一现有应用场景对本发明实施例阐述如下:
[0103]应用本发明实施例的一基于MPP和Hadoop技术的半结构化数据快速联合处理场景中,对于目前现有技术在处理半结构化数据上的诸多问题,如目前的NoSQL技术,尤其Hadoop体系下的HDFS和Hbase在处理半结构数据方面存在较多的问题,其更加适合非结构化数据,尤其是大规模的非结构化数据。同时,我们也看到MPP技术和系统更加适合处理结构化数据、尤其小规模的结构化数据,在深入研究非结构化数据的基础上,基于MPP和Hadoop技术特点提出了一种新的半结构化数据快速联合处理方案,即:利用MPP数据库和Hadoop数据处理体系的各自技术优点,针对半结构化数据可以分拆为结构化数据+非结构化数据的结构模式,让MPP数据库单独处理结构化数据,而Hadoop技术体系同时处理非结构化数据,也就是说,让半结构化数据可以分拆为结构化数据和非结构化数据成为可行后,结构化数据采用非常适合其特点的MPP数据库处理库,非结构化数据采用非常适合其特点的HDFS+Hbase系统处理,以实现非结构化数据处理的高速、大规模、高吞吐量、高可扩展性等需求。
[0104]对于,结构化数据采用非常适合其特点的MPP数据库处理库,非结构化数据采用非常适合其特点的HDFS+Hbase系统处理,具体包括以下内容:
[0105](I)基于Share-Nothing的MPP数据库是目前新型的数据库技术,其有别于传统的RDBMS系统,其在结构化数据处理方面性能优越,而且具有极强的可扩展性,并采用X86架构。
[0106](2)大数据Hadoop体系下的HDFS和Hbase是目前较为成熟的处理非结构化数据技术,其采用列存储、Key-Value、分布式文件系统、文件存储等技术,非常适合处理非结构化速据,尤其是一次写多次读取、大规模数据情况下。
[0107](3)半结构化数据,因为其数据特点,不仅包含较为规律的结构化数据,而且还包含非结构化数据,因此正常情况下将其分拆为结构化数据+非结构化数据,同时采用XML语言描述非结构化数据。
[0108](4)基于MPP数据库和Hadoop系统实现混合的数据处理系统,MPP负责处理半结构化中的结构化数据,而Hadoop系统负责处理半结构化数据中的非结构化数据。
[0109](5)为了管理半结构化数据的分拆、合并以及元数据,需要具体实现半结构化数据处理引擎,其负责和上层应用系统、下层的MPP、Hadoop系统接口。
[0110]图3为应用本发明实施例的基于MPP和Hadoop技术的半结构化数据快速联合处理场景的系统结构示意图,如图3所示,该系统主要包括四层:1)上层各种应用系统;2)半结构化数据处理引擎;3)MPP/HDFS客户端、Hbase数据库;4)MPP数据库系统、HDFS分布式文件系统。图3中,半结构化数据处理引擎这一层是实现本方案的关键,其一方面接受上层各种应用系统的调用,另一方面和MPP数据库系统、HDFS/Hbase系统接口。在具体实现中,半结构化数据处理引擎可以采用X86服务器,单独部署,为了防止SPOF问题,其采用Cluster技术实现集群。
[0111]图4为应用本发明实施例的基于MPP和Hadoop技术的半结构化数据快速联合处理场景的整个系统工作流程图,如图4所示,整个系统的实现过程如下:
[0112]步骤201、首先是整个系统的初始化,包括Hadoop HDFS的搭建运行以及Hbase、MPP的搭建运行。同时还包括系统环境变量的初始化操作、网络初始化操作等;
[0113]步骤202、对半结构化数据进行简单数据清洗,主要是删除无效数据并对数据的数据存放形式进行简单区分;
[0114]步骤203、数据处理引擎对所有的半结构化数据进行区分,主要区分为结构化数据和非结构化数据;
[0115]步骤204、调用MPP数据仓库接口将步骤203当中获取到的结构化数据存储到MPP数据仓库当中;
[0116]步骤205、调用Hadoop Hbase接口将步骤203当中获取到的非结构化数据存储到Hbase当中;
[0117]步骤206、将MPP数据库以及Hbase数据库分布于分布式文件系统HDFS中;
[0118]步骤207、其它应用可以直接通过统一管理接口实现数据传递;
[0119]步骤208、各种应用进行数据交互。
[0120]图5为应用本发明实施例的半结构化数据处理引擎的示意图,是对半结构化数据处理引擎的进一步细化,对于半结构化数据处理引擎而言,如图5所示,其功能结构如下:
[0121]半结构化数据处理引擎的核心部件包括写操作处理引擎、读操作处理引擎以及元数据管理模块,元数据管理模块是记录和管理各种NoSQL操作的关键所在;而读、写操作处理引擎各自负责NoSQL读操作、写操作的具体读、写处理。
[0122]如图5所示,半结构化数据处理引擎,主要用于接收到NoSQL写操作时,分拆非结构化数据操作为SQL类操作和Hbase操作,然后分别写MPP数据库、Hbase数据库;而接收到NoSQL读操作时,根据信息情况,分别从MPP数据库和Hbase数据库读取数据;或者单独从MPP数据库或Hbase读取数据。
[0123]同时,在和上层各类应用的接口处理中,还可以使用Java类API作为统一的API处理接口方式,因为Java类普遍被各种NoSQL数据库所采用,而且具有非常好的可移植性,适合各类应用。
[0124]利用图5所示的半结构化数据处理引擎进行半结构化数据处理流程,主要包括读、写操作、以及非读写操作;非读写操作主要是配置、删除、创建等操作;而读、写操作处理中最为关键的是数据、语句处理。它们的具体处理流程如下:
[0125]一:对于写操作来说,半结构化数据处理引擎的写操作具体流程如下:
[0126]{
[0127]1、写操作引擎接收Java类API写操作;
[0128]2、写操作处理引擎分析具体“写”操作的数据;
[0129]3、如果全部是非结构化数据,直接调用Hbase客户端,直接将数据写到Hbase数据库,并写元数据到元数据管理模块;跳到步骤X;
[0130]4、如果全部是结构化数据,需要将NoSQL的写操作更换为SQL写操作;
[0131]5、直接调用MPP客户端接口写数据,处理完成后跳到步骤X ;
[0132]6、如果是非结构化数据,则首先分拆数据为结构化数据、非结构化数据;并写元数据到元数据管理模块;
[0133]7、调用Hbase客户端,将非结构化数据写到Hbase数据库;
[0134]8、转换NoSQL语句为SQL语句,调用MPP客户端将数据写到MPP数据库系统中。
[0135]X、将处理结果返回Java类API。
[0136]}
[0137]二,对于读操作来说,半结构化数据处理引擎的读操作具体流程如下:
[0138]{
[0139]1、读操作引擎接收Java类API读操作;
[0140]2、读操作处理引擎分析具体“读”操作的数据;
[0141]3、如果读操作的数据全部是非结构化数据,则直接调用Hbase客户端接口,读取数据,并跳到X ;
[0142]4、如果读操作的数据全部是结构化数据,则将NoSQL读语句转化为SQL读语句;
[0143]5、调用MPP客户端接口,读取数据,然后跳到X ;
[0144]6、如果读操作的数据是半结构化数据,首先需要将数据分解,分为为结构化数据、非结构化数据;
[0145]7、调用Hbase客户端,从Hbase数据库读非结构化数据;
[0146]8、转换NoSQL语句为SQL语句,调用MPP客户端从MPP数据库系统中读结构化数据。
[0147]9、合并结构化数据和非结构化数据;
[0148]X、将处理结果返回Java类API ;
[0149]}
[0150]三,对于半结构化数据分拆和组装而言,因为上层应用中不仅存在明显的SQL操作、非结构化操作,还有半结构化数据传统的处理方法是采用NoSQL技术处理,因此在写操作的时候需要对半结构化数据进行分拆,而在读的时候需要对结构化数据和非结构化数据组装为半结构化数据,包括以下内容:
[0151]I)对半结构化数据进行分拆来说,分拆算法如下:
[0152]{
[0153]1、列出所有的分拆行键;
[0154]2、按照行、列:标识符创建新的非结构化文件和结构化文件;
[0155]3、对于所有需要分拆的行继续处理;
[0156]4、将所有的分拆行中的所有列读出放到新的非结构化文件,跳转到6 ;
[0157]5、将所有的其他行读出放到新的结构化文件;
[0158]6、存放相关的元数据信息到元数据管理模块;
[0159]7、返回处理结果;
[0160]}
[0161]2)对结构化数据和非结构化数据组装为半结构化数据来说,组装算法如下:
[0162]{
[0163]1、读取Hbase中的用户数据A ;
[0164]2、读取MPP中的用户数据B,并得到所有的行数;
[0165]3、将用户数据B按照行,列:标识符全部存放到用户数据A ;
[0166]4、实现新的非结构化数据封装。
[0167]}
[0168]四,对于图5中的元数据管理模块而言,元数据管理模块是读、写操作处理引擎的帮手,其主要用于是在读、写操作的时候能够清楚地判断非结构化数据库。其在实现上主要通过库队列实现,其数据结构如下:
[0169]Struct un1n-key{
[0170]Struct un1n-key氺prev ;
[0171]数据库名称:字符串;
[0172]表名称:字符串;
[0173]结构类型:整数值;/*半结构、结构、非结构*/
[0174]非结构的行值:列表;
[0175]Struct un1n-key氺next
[0176]}
[0177]五,针对图5的写操作处理引擎而言,其在处理数据库、表的时候,首先需要读写元数据管理模块,判断目前的数据库库、表的类型,如果是非结构就采取分拆动作;而读操作在处理的时候,如果是半结构数据,其需要从MPP和Hbase库中进行分别读取。
[0178]本发明实施例基于MPP和Hadoop技术对半结构化数据实现快速联合处理,与现有技术相比,具有以下优势:
[0179](I)在基本不增加特别大的成本情况下,能够有效处理非结构数据,其采用MPP+HAD00P混合体系进行处理。
[0180](2)采用MPP+Hadoop混合技术能够有效提高非结构数据的性能,尤其是查询类操作,这样可以避免HDFS的缺点。
[0181](3)采用MPP+HAD00P混合体系,尤其适合大量小文件情况,性能可以大幅增加。
[0182](4)基于HAD00P+MPP混合技术体系,还可以有效利用HAD00P在大规模文件操作时的可扩展性、并行计算等优势,基本上不降低系统性能。
[0183](5)尤其对于非结构数据比较少但结构化数据比较多的情况下,可以大幅提高系统处理性能。
[0184]本发明实施例所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实施例的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机、服务器、或者网络设备等)执行本发明各个实施例所述方法的全部或部分。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。这样,本发明实施例不限制于任何特定的硬件和软件结合。
[0185]相应的,本发明实施例还提供一种计算机存储介质,其中存储有计算机程序,该计算机程序用于执行本发明实施例的半结构化数据快速联合处理的方法。
[0186]以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。
【主权项】
1.一种半结构化数据快速联合处理的方法,其特征在于,所述方法包括: 从待处理数据中提取半结构化数据,将所述半结构化数据区分为用结构化数据+非结构化数据模式描述的数据; 对用所述结构化数据+非结构化数据模式描述的数据采用MPP+HADOOP混合体系进行处理。2.根据权利要求1所述的方法,其特征在于,对于写操作请求,所述将所述半结构化数据区分为用结构化数据+非结构化数据模式描述的数据,包括: 启动数据处理引擎,所述数据处理引擎作为系统架构的中间层,用于对位于所述数据处理引擎上层应用系统的应用数据进行分析,并调用位于所述数据处理引擎下层的所述MPP+HADOOP混合体系进行数据处理; 通过所述数据处理引擎对所述半结构化数据进行分拆,得到所述结构化数据和所述非结构化数据; 相应的,所述对用所述结构化数据+非结构化数据模式描述的数据采用MPP+HADOOP混合体系进行处理,包括: 所述数据处理引擎调用所述MPP+HADOOP混合体系中的MPP数据库接口,将所述结构化数据存储到MPP数据库中并交由MPP数据库单独处理所述结构化数据; 所述数据处理引擎调用所述MPP+HADOOP混合体系中的HADOOP Hbase接口,将所述非结构化数据存储到Hbase数据库中并交由Hbase数据库单独处理所述非结构化数据。3.根据权利要求2所述的方法,其特征在于,所述通过所述数据处理引擎对所述半结构化数据进行分拆,得到所述结构化数据和所述非结构化数据,包括: 列出所述半结构化数据中所有的分拆行键,按照行标识符和列标识符创建得到的新的非结构化文件和结构化文件; 对于所有需要分拆的行继续处理,将所有的分拆行中的所有列读出放到新的非结构化文件,并存放相关的元数据信息到元数据处理模块; 将所有的其他行读出放到新的结构化文件,并存放相关的元数据信息到元数据处理模块。4.根据权利要求2所述的方法,其特征在于,对于读操作请求,所述方法还包括: 所述数据处理引擎调用所述MPP+HAD00P混合体系中的MPP数据库接口,将所述结构化数据从MPP数据库中读取出来; 所述数据处理引擎调用所述MPP+HAD00P混合体系中的HADOOP Hbase接口,将所述非结构化数据从Hbase数据库中读取出来; 将所述结构化数据和所述非结构化数据组合还原为所述半结构化数据。5.根据权利要求4所述的方法,其特征在于,所述将所述结构化数据和所述非结构化数据组合还原为所述半结构化数据,包括: 读取Hbase中的非结构化数据; 读取MPP中的结构化数据,并得到所有的行数; 将结构化数据按照行标识符和列标识符全部存放到非结构化数据中,实现新的非结构化数据的封装。6.根据权利要求3或5所述的方法,其特征在于,所述方法还包括:在执行所述分拆或所述组合之前,判断当前的数据库和表的类型,如果是非结构化数据则提示进行分拆处理;如果是半结构化数据,则提示需要从所述MPP数据库和所述Hbase数据库中进行数据分别读取以进行组合处理。7.一种半结构化数据快速联合处理的系统,其特征在于,所述系统包括: 数据处理引擎,用于从待处理数据中提取半结构化数据,将所述半结构化数据区分为用结构化数据+非结构化数据模式描述的数据;调用MPP+HADOOP系统层,使得能对用所述结构化数据+非结构化数据模式描述的数据采用MPP+HADOOP混合体系进行处理; 上层应用系统层,用于为所述数据处理引擎提供所述待处理数据; MPP+HADOOP系统层,用于接受所述数据处理引擎的调度,对所述结构化数据+非结构化数据模式描述的数据采用MPP+HADOOP混合体系进行处理。8.根据权利要求7所述的系统,其特征在于,所述数据处理引擎,进一步包括: 写操作处理引擎,用于对于写操作请求的情况下,对所述半结构化数据进行分拆,得到所述结构化数据和所述非结构化数据,并分别调用MPP数据库接口和HADOOP Hbase接口触发MPP操作处理模块和Hbase操作处理模块进行数据处理; MPP操作处理模块,用于接受所述写操作处理引擎的调用,将所述结构化数据存储到MPP数据库中并交由MPP数据库单独处理所述结构化数据; Hbase操作处理模块,用于接受所述写操作处理引擎的调用,将所述非结构化数据存储到Hbase数据库中并交由Hbase数据库单独处理所述非结构化数据。9.根据权利要求8所述的系统,其特征在于,所述写操作处理引擎,进一步用于: 列出所述半结构化数据中所有的分拆行键,按照行标识符和列标识符创建得到的新的非结构化文件和结构化文件; 对于所有需要分拆的行继续处理,将所有的分拆行中的所有列读出放到新的非结构化文件,并存放相关的元数据信息到元数据处理模块; 将所有的其他行读出放到新的结构化文件,并存放相关的元数据信息到元数据处理模块。10.根据权利要求8所述的系统,其特征在于,所述数据处理引擎,进一步包括: 读操作处理引擎,用于对于读操作请求的情况下,分别调用MPP数据库接口和HADOOPHbase接口触发MPP操作处理模块和Hbase操作处理模块进行数据处理; 所述MPP操作处理模块,进一步用于接受所述读操作处理引擎的调用,将所述结构化数据从MPP数据库中读取出来,并交由所述读操作处理引擎; 所述Hbase操作处理模块,进一步用于接受所述读操作处理引擎的调用,将所述非结构化数据从Hbase数据库中读取出来,并交由所述读操作处理引擎; 所述读操作处理引擎,还用于将所述结构化数据和所述非结构化数据组合还原为所述半结构化数据。11.根据权利要求10所述的系统,其特征在于,所述读操作处理引擎,进一步用于: 读取Hbase中的非结构化数据; 读取MPP中的结构化数据,并得到所有的行数; 将结构化数据按照行标识符和列标识符全部存放到非结构化数据中,实现新的非结构化数据的封装。12.根据权利要求9或11所述的系统,其特征在于,所述系统还包括: 元数据管理模块,用于在执行所述分拆或所述组合之前,判断当前的数据库和表的类型,如果是非结构化数据则提示所述写操作处理引擎进行分拆处理;如果是半结构化数据,则提示需要从所述MPP数据库和所述Hbase数据库中进行数据分别读取,以提供给所述读操作处理引擎进行组合处理。
【文档编号】G06F17/30GK105989117SQ201510080610
【公开日】2016年10月5日
【申请日】2015年2月13日
【发明人】鲁瑞, 侯建卫, 付长冬
【申请人】中国移动通信集团山西有限公司