一种数据处理设备、方法和计算机可读存储介质与流程

文档序号:11276474阅读:160来源:国知局
本发明涉及数据处理领域,更具体地说,涉及一种数据处理设备、方法和计算机可读存储介质。
背景技术
::大数据处理中,数据更新是最常见的一种数据处理,hive(数据仓库基础构架)作为处理数据的最为常用的组件,由于其支持sql(结构化查询语言)或类sql而得到广泛的应用。然而,由于hive本身处理数据的单一,不支持对数据的去重操作,也就无法进行数据的更新,导致单纯应用hive的数据库不发有效的完成复杂结构化数据的更新操作,处理流程复杂,维护成本高。技术实现要素:本发明要解决的技术问题在于如何解决现有技术中应用hive组件的数据处理不支持去重操作,从而导致对数据的更新复杂,维护成本高的问题;针对该技术问题,提供一种数据处理设备,其特征在于,所述数据处理设备包括处理器、存储器以及通信总线:所述通信总线用于实现处理器和存储器之间的连接通信;所述处理器用于执行所述存储器中存储的数据处理程序,以实现:确认已部署的数据仓库基础构架和海杜普数据库;接收客户端发送的创建修改表对应的第一控制命令;对所述第一控制命令进行解析,判断是否需要去重,生成判断结果;根据判断结果对应的在数据仓库基础构架和/或海杜普数据库中创建表。可选的,所述对第一控制命令进行解析,判断是否包含预设字段,生成判断结果包括:解析所述第一控制命令中,是否包含norepeat字段;所述判断结果包括是或否;所述根据判断结果对应的在数据仓库基础构架和/或海杜普数据库中创建表包括:若判断结果为是,则在所述数据仓库基础构架中创建实体表与对应的映射表,以及在所述海杜普数据库中创建对应的索引表;如判断结果为否,则直接在所述数据仓库基础构架中创建实体表。可选的,所述根据判断结果对应的在数据仓库基础构架和/或海杜普数据库中创建表之后,所述处理器还用于执行所述数据处理程序,以实现:接收客户端发送的添加和/或修改数据对应的第二控制命令;在所述索引表中,查找是否存在与所述第二控制命令对应的表的名称;若是,则将待添加和/或修改的数据进行去重处理后,写入所述实体表中。可选的,所述将待添加和/或修改的数据进行去重处理后,写入所述实体表中包括:将所述待添加和/或修改的数据通过所述映射表保存至所述索引表中;在所述索引表中,通过所述待添加和/或修改的数据对对应的表进行更新;将更新后的所述索引表的内容重写入所述实体表中。本发明还提供一种计算机可读存储介质,所述计算机可读存储介质存储有一个或者多个程序,所述一个或者多个程序可被一个或者多个处理器执行,以实现:确认已部署的数据仓库基础构架和海杜普数据库;接收客户端发送的创建修改表对应的第一控制命令;对所述第一控制命令进行解析,判断是否需要去重,生成判断结果;根据判断结果对应的在数据仓库基础构架和/或海杜普数据库中创建表。本发明还提供一种基于分布式系统基础架构的数据处理方法,包括:确认已部署的数据仓库基础构架和海杜普数据库;接收客户端发送的创建修改表对应的第一控制命令;对所述第一控制命令进行解析,判断是否需要去重,生成判断结果;根据判断结果对应的在数据仓库基础构架和/或海杜普数据库中创建表。可选的,所述对第一控制命令进行解析,判断是否包含预设字段,生成判断结果包括:解析所述第一控制命令中,是否包含norepeat字段;所述判断结果包括是或否;所述根据判断结果对应的在数据仓库基础构架和/或海杜普数据库中创建表包括:若判断结果为是,则在所述数据仓库基础构架中创建实体表与对应的映射表,以及在所述海杜普数据库中创建对应的索引表;如判断结果为否,则直接在所述数据仓库基础构架中创建实体表。可选的,在所述根据判断结果对应的在数据仓库基础构架和/或海杜普数据库中创建表之后,还包括:接收客户端发送的添加和/或修改数据对应的第二控制命令;在所述索引表中,查找是否存在与所述第二控制命令对应的表的名称;若是,则将待添加和/或修改的数据进行去重处理后,写入所述实体表中。可选的,所述将待添加和/或修改的数据进行去重处理后,写入所述实体表中包括:将所述待添加和/或修改的数据通过所述映射表保存至所述索引表中;在所述索引表中,通过所述待添加和/或修改的数据对对应的表进行更新;将更新后的所述索引表的内容重写入所述实体表中。可选的,在所述接收客户端发送的创建修改表对应的第一控制命令之前,还包括:接收所述客户端发送的密钥,并通过所述密钥对所述客户端进行鉴权;鉴权通过后,允许所述客户端发送命令。有益效果本发明提供了一种数据处理设备、方法和计算机可读存储介质,确认已部署的数据仓库基础构架和海杜普数据库,接收客户端发送的创建修改表对应的第一控制命令,对第一控制命令进行解析,判断是否需要去重,生成判断结果,根据判断结果对应的在数据仓库基础构架和/或海杜普数据库中创建表。通过本发明的实施,通过海杜普数据库的应用,以及在创建时判断是否需要去重,从而为数据仓库基础构架中的实体表的数据更新提供了便利,减小了维护成本。附图说明下面将结合附图及实施例对本发明作进一步说明,附图中:图1为本发明第一实施例提供的数据处理装置的组成示意图;图2为本发明第一实施例提供的各单元交互关系示意图;图3为本发明第二实施例提供的数据处理方法流程图;图4为本发明第三实施例提供的数据处理设备组成示意图。具体实施方式应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。第一实施例参照图1,图1为本发明第一实施例提供的基于hadoop(分布式系统基础架构)数据处理装置组成示意图。本实施例中的数据处理装置,包括:确认模块101,用于确认已部署的hive(数据仓库基础构架)和hbase(海杜普数据库);接收模块102,用于接收客户端发送的创建修改表对应的第一控制命令;解析模块103,用于对第一控制命令进行解析,判断是否需要去重,生成判断结果;处理模块104,用于根据判断结果对应的在hive和/或hbase中创建表。本实施例涉及服务端、客户端、以及hive组件,hbase组件等等单元,其中各单元之间的交互所用的方式不尽相同,请参考图2,图2示出了本实施例的各个单元之间的交互关系。hadoop,即分布式系统基础架构,他可以使得用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力进行高速运算和存储。而hive和hbase都是hadoop的一种应用子项目,其中:hive是基于hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的sql查询功能,可以将sql语句转换为mapreduce(映射归约)任务进行运行。其优点是学习成本低,可以通过类sql语句快速实现简单的mapreduce统计,不必开发专门的mapreduce应用,十分适合数据仓库的统计分析。其缺陷,在于无法区分相同的表和数据,换言之,无法对指定的表进行更新操作。hbase是一个分布式的、面向列的开源数据库,其可以非常简易的对数据进行更新。不同于hive,hbase并不适用于sql语句查询。在本实施例中,确认模块101用于确认已部署的hive和hbase。这两个数据库可以整合为一个组件,一般部署在服务器上。该组件分别包括服务端和客户端。服务端主要完成与hbase,hive的结构的调用,完成创建、删除、执行sql语句等功能。客户端则在远程进行对服务端的远程调用,用户可以通过运行壳黄栓在命令行中完成操作,无需直接操作服务端,就可以完成所需的数据的写入、更新等过程。此外,在本实施例中,还可以集成客户端至项目中,然后通过在代码中调用客户端的接口api,从而实现对服务端的远程调用。在本实施例中,接收模块102用于接收客户端发送的创建修改表对应的第一控制命令。客户端通过发送控制命令实现对服务端中的数据的写入、更新、删除等操作,也就是实现对服务端的控制;客户端与服务端通过rpc(远程过程调用协议)进行交互。在正式交互之前,也就是客户端向服务端进发送第一控制命令,进而进行数据处理之前,一般都需要进行鉴权操作。本实施例还可以包括鉴权模块105,用于接收客户端发送的密钥,并通过密钥对客户端进行鉴权;鉴权通过后,允许客户端发送命令。为了保证系统的安全,避免其他非本数据处理系统的其他客户端发送命令对服务端中的数据进行恶意篡改,还通过鉴权模块105,对客户端的权限进行鉴定。具体的,在进行鉴权之前,服务端和客户端会根据实际权限,为各个客户端分配确定的密钥,这个密钥对于不同的,且都具有权限的客户端而言可以相同,也可以不同,但是对于不具备权限的客户端则无从知晓密钥的内容。在进行鉴权时,服务端接收客户端所发送的,分配给客户端的密钥,来对客户端进行鉴权,鉴权的具体过程可以包括:将该密钥与预存在服务端的,符合鉴权要求的密钥进行比对,若比对结果为满足要求,则输出鉴权通过的结果,即该客户端的具有管理服务端的权限。其中,比对结果满足要求可以是,客户端提供的密钥与服务端预存的密钥一致,或者客户端提供的密钥,与服务端预存的密钥匹配,这个匹配可以结合客户端的标识,如mac地址,ip地址等等,匹配的含义则可以包括客户端提供的密钥与服务端预存的密钥的组合满足预设规则等等。具体的,鉴权模块105对客户端的鉴权方式可以根据具体的应用场景选择合适的方式,本实施例并不对其进行具体的限定。客户端所发送的创建修改表对应的第一控制命令,所指的是,该第一控制命令对应于创建表,或者修改表。创建表和修改表的命令都是针对hive而言的,即客户端所要进行的控制是在hive中创建或者修改表。在hive中创建的表里,实体表可供用户查询数据,映射表则是与实体表对应的表,可以帮助实体表进行更新操作。客户端所发送的第一控制命令是通过rpc发送的,由于hive可直接通过sql查询,因此,第一控制命令在服务端也以sql方式进行传递。在本实施例中,解析模块103用于对第一控制命令进行解析,判断是否需要去重,生成判断结果。解析第一控制命令,就是解析通过sql方式传递的第一控制命令中所包含的语句。判断是否需要去重,则是指即将创建的表,是否需要进行去重的操作。简而言之,在hive中创建的表中,并不是所有的表都是需要对同样的数据进行区分的,有的表允许有重复的数据,也就是不需要进行更新操作,而有的表,则需要进行更新操作,对于需要进行更新操作的表,就是需要进行去重的表,即去掉重复的表,保留更新后的表。在本实施例中,通过第一控制命令来区分,创建的表是否需要进行去重操作。在一些可行的实施例中,可以通过在第一控制命令中添加norepeat字段与否,来判定是否需要进行去重操作。norepeat,即无重复,表示需要去重,而如果没有添加这个字段,则表示无需去重。例如,具体的一种实现方式是:如果sql语句中包括字段:create[norepeat]tabletable_name…,则说明待创建的表是需要去重的表。值得一提的是,采用这种方式仅仅是本实施例中一个可行的方案,实际上完全可以采用其他方式进行,比如将norepeat字段替换成update等等其他字段,或者仅仅是一个简单的标记,只要能够将去重和不去重的待创建的表进行区分即可。进一步的,在本实施例中,解析模块103还可以用于:解析第一控制命令中,是否包含norepeat字段;判断结果包括是与否。也就是说,由于客户端发送的第一控制命令中,通过添加norepeat字段与否,来表征待创建的表是否需要去重,那么,解析模块103就据此,来解析其中的字段是否包括了norepeat字段,并根据解析的结果,生成判断结果。若是,则判断结果为是,表示待创建的表需要去重;若否,则判断结果为否,表示不需要去重。相应的,处理模块104还可以用于:若判断结果为是,则在hive中创建实体表和对应的映射表,以及在hbase中创建对应的索引表;若判断结果为否,则直接在hive中创建实体表。实体表是可供用户查询数据的表,是hive中的主体,映射表则与实体表对应,是实体表的一种映射;索引表创建于hbase中,与映射表相对应,索引表与映射表的结构一致。索引表具体可以是以首字段为rowkey的索引表,来保存索引对应的数据,利用rowkey来保证数据的唯一性。此外,在本实施例中,接收模块102还可以用于:接收客户端发送的添加和/修改数据对应的第二控制命令;解析模块103还可以用于:在索引表中,查找是否存在于第二控制命令对应的表的名称;处理模块104还可以用于:若是,则将待添加和/或修改的数据进行去重处理后,写入实体表中。在创建表之后,如果有数据要写入创建的表,解析模块103确定第二控制命令对应的表的名称,比如,第二控制命令中所包括的table_name…这样的字段,就可以确定表的名称,根据确定的表的名称,在索引表中查找是否存在该表的名称一致的表。由于只有需要去重的表,才会在hbase中创建索引表,因此,如果查找到不存在,说明第二控制命令对应的表是一个新表,或者是不需要去重的表,不管是哪种情况,都可以直接将这个表添加到hive中,即在hive中创建一个对应的实体表。如果在索引表中查找到了一致的表,则说明该表是需要进行去重的表,那么,通过hive中的映射表,将该表的内容进行去重处理后,再写入实体表中。在本实施例中,去重处理可以通过hive中的映射表和hbase中的索引表来进行,具体的,处理模块104还用于:将待添加和/或修改的数据通过映射表保存至索引表中;在索引表中,通过待添加和/或修改的数据的对应的表进行更新;将更新后的索引表的内容,重写入实体表中。利用hbase可更新的特点,将原来的索引表进行更新,更新之后的结果再重写入实体表中,从而实现了对hive中实体表的更新。此外,如果sql解析异常或者连接hbase、hive组件异常时,可以返回异常代码给客户端,客户端抛出异常至控制台,由控制台来进行解决,或者控制台通知运维人员来维护。本实施例提供了一种基于分布式系统基础架构的数据处理装置,确认已部署的hive和hbase,接收客户端发送的创建修改表对应的第一控制命令,对第一控制命令进行解析,判断是否需要去重,生成判断结果,根据判断结果对应的在hive和/或hbase中创建表。通过本实施例的实施,通过hbase的应用,以及在创建时判断是否需要去重,从而为数据仓库基础构架中的实体表的数据更新提供了便利,减小了维护成本。第二实施例参照图3,图3为本发明第二实施例提供的基于hadoop数据处理方法流程图。本实施例中的数据处理方法,包括:s301、确认已部署的hive和hbase;s302、接收客户端发送的创建修改表对应的第一控制命令;s303、对第一控制命令进行解析,判断是否需要去重,生成判断结果;s304、根据判断结果对应的在hive和/或hbase中创建表。s301中,确认已部署的hive和hbase。这两个数据库可以整合为一个组件,一般部署在服务器上。该组件分别包括服务端和客户端。服务端主要完成与hbase,hive的结构的调用,完成创建、删除、执行sql语句等功能。客户端则在远程进行对服务端的远程调用,用户可以通过运行壳黄栓在命令行中完成操作,无需直接操作服务端,就可以完成所需的数据的写入、更新等过程。此外,在本实施例中,还可以集成客户端至项目中,然后通过在代码中调用客户端的接口api,从而实现对服务端的远程调用。s302中,接收客户端发送的创建修改表对应的第一控制命令。客户端通过发送控制命令实现对服务端中的数据的写入、更新、删除等操作,也就是实现对服务端的控制;客户端与服务端通过rpc进行交互。在正式交互之前,也就是客户端向服务端进发送第一控制命令,进而进行数据处理之前,一般都需要进行鉴权操作。具体的,在接收客户端发送的创建修改表对应的第一控制命令之前,还可以包括:接收客户端发送的密钥,并通过密钥对客户端进行鉴权;鉴权通过后,允许客户端发送命令。为了保证系统的安全,避免其他非本数据处理系统的其他客户端发送命令对服务端中的数据进行恶意篡改,还可以对客户端的权限进行鉴定。具体的,在进行鉴权之前,服务端和客户端会根据实际权限,为各个客户端分配确定的密钥,这个密钥对于不同的,且都具有权限的客户端而言可以相同,也可以不同,但是对于不具备权限的客户端则无从知晓密钥的内容。在进行鉴权时,服务端接收客户端所发送的,分配给客户端的密钥,来对客户端进行鉴权,鉴权的具体过程可以包括:将该密钥与预存在服务端的,符合鉴权要求的密钥进行比对,若比对结果为满足要求,则输出鉴权通过的结果,即该客户端的具有管理服务端的权限。其中,比对结果满足要求可以是,客户端提供的密钥与服务端预存的密钥一致,或者客户端提供的密钥,与服务端预存的密钥匹配,这个匹配可以结合客户端的标识,如mac地址,ip地址等等,匹配的含义则可以包括客户端提供的密钥与服务端预存的密钥的组合满足预设规则等等。具体的,对客户端的鉴权方式可以根据具体的应用场景选择合适的方式,本实施例并不对其进行具体的限定。客户端所发送的创建修改表对应的第一控制命令,所指的是,该第一控制命令对应于创建表,或者修改表。创建表和修改表的命令都是针对hive而言的,即客户端所要进行的控制是在hive中创建或者修改表。在hive中创建的表里,实体表可供用户查询数据,映射表则是与实体表对应的表,可以帮助实体表进行更新操作。客户端所发送的第一控制命令是通过rpc发送的,由于hive可直接通过sql查询,因此,第一控制命令在服务端也以sql方式进行传递。s303中,对第一控制命令进行解析,判断是否需要去重,生成判断结果。解析第一控制命令,就是解析通过sql方式传递的第一控制命令中所包含的语句。判断是否需要去重,则是指即将创建的表,是否需要进行去重的操作。简而言之,在hive中创建的表中,并不是所有的表都是需要对同样的数据进行区分的,有的表允许有重复的数据,也就是不需要进行更新操作,而有的表,则需要进行更新操作,对于需要进行更新操作的表,就是需要进行去重的表,即去掉重复的表,保留更新后的表。在本实施例中,通过第一控制命令来区分,创建的表是否需要进行去重操作。在一些可行的实施例中,可以通过在第一控制命令中添加norepeat字段与否,来判定是否需要进行去重操作。norepeat,即无重复,表示需要去重,而如果没有添加这个字段,则表示无需去重。例如,具体的一种实现方式是:如果sql语句中包括字段:create[norepeat]tabletable_name…,则说明待创建的表是需要去重的表。值得一提的是,采用这种方式仅仅是本实施例中一个可行的方案,实际上完全可以采用其他方式进行,比如将norepeat字段替换成update等等其他字段,或者仅仅是一个简单的标记,只要能够将去重和不去重的待创建的表进行区分即可。进一步的,在本实施例中,对第一控制命令进行解析,判断是否包含预设字段,生成判断结果可以包括:解析第一控制命令中,是否包含norepeat字段;判断结果包括是与否。也就是说,由于客户端发送的第一控制命令中,通过添加norepeat字段与否,来表征待创建的表是否需要去重,那么,就据此来解析其中的字段是否包括了norepeat字段,并根据解析的结果,生成判断结果。若是,则判断结果为是,表示待创建的表需要去重;若否,则判断结果为否,表示不需要去重。相应的,根据判断结果对应的在数据仓库基础构架和/或海杜普数据库中创建表可以包括:若判断结果为是,则在hive中创建实体表和对应的映射表,以及在hbase中创建对应的索引表;若判断结果为否,则直接在hive中创建实体表。实体表是可供用户查询数据的表,是hive中的主体,映射表则与实体表对应,是实体表的一种映射;索引表创建于hbase中,与映射表相对应,索引表与映射表的结构一致。索引表具体可以是以首字段为rowkey的索引表,来保存索引对应的数据,利用rowkey来保证数据的唯一性。此外,在本实施例中,在根据判断结果对应的在数据仓库基础构架和/或海杜普数据库中创建表之后,还可以包括:接收客户端发送的添加和/修改数据对应的第二控制命令;在索引表中,查找是否存在于第二控制命令对应的表的名称;若是,则将待添加和/或修改的数据进行去重处理后,写入实体表中。在创建表之后,如果有数据要写入创建的表,需确定第二控制命令对应的表的名称,比如,第二控制命令中所包括的table_name…这样的字段,就可以确定表的名称,根据确定的表的名称,在索引表中查找是否存在该表的名称一致的表。由于只有需要去重的表,才会在hbase中创建索引表,因此,如果查找到不存在,说明第二控制命令对应的表是一个新表,或者是不需要去重的表,不管是哪种情况,都可以直接将这个表添加到hive中,即在hive中创建一个对应的实体表。如果在索引表中查找到了一致的表,则说明该表是需要进行去重的表,那么,通过hive中的映射表,将该表的内容进行去重处理后,再写入实体表中。在本实施例中,去重处理可以通过hive中的映射表和hbase中的索引表来进行,具体的,将待添加和/或修改的数据进行去重处理后,写入实体表中可以包括:将待添加和/或修改的数据通过映射表保存至索引表中;在索引表中,通过待添加和/或修改的数据的对应的表进行更新;将更新后的索引表的内容,重写入实体表中。利用hbase可更新的特点,将原来的索引表进行更新,更新之后的结果再重写入实体表中,从而实现了对hive中实体表的更新。此外,如果sql解析异常或者连接hbase、hive组件异常时,可以返回异常代码给客户端,客户端抛出异常至控制台,由控制台来进行解决,或者控制台通知运维人员来维护。本实施例提供了一种基于分布式系统基础架构的数据处理方法,确认已部署的hive和hbase,接收客户端发送的创建修改表对应的第一控制命令,对第一控制命令进行解析,判断是否需要去重,生成判断结果,根据判断结果对应的在hive和/或hbase中创建表。通过本实施例的实施,通过hbase的应用,以及在创建时判断是否需要去重,从而为数据仓库基础构架中的实体表的数据更新提供了便利,减小了维护成本。第三实施例参照图4,图4为本发明第三实施例提供的一种数据处理设备的组成示意图,本实施例中的数据处理设备,包括:处理器401、存储器402以及通信总线403;通信总线403用于实现处理器401和存储器402之间的连接通信;处理器401用于执行存储器402中存储的数据处理程序,以实现:确认已部署的数据仓库基础构架和海杜普数据库;接收客户端发送的修改创建表对应的第一控制命令;对第一控制命令进行解析,判断是否需要去重,生成判断结果;根据判断结果对应的在数据仓库基础构架和/或海杜普数据库中创建表。在本实施例中,执行数据处理程序,首先实现:确认已部署的hive和hbase。这两个数据库可以整合为一个组件,一般部署在服务器上。该组件分别包括服务端和客户端。服务端主要完成与hbase,hive的结构的调用,完成创建、删除、执行sql语句等功能。客户端则在远程进行对服务端的远程调用,用户可以通过运行壳黄栓在命令行中完成操作,无需直接操作服务端,就可以完成所需的数据的写入、更新等过程。此外,在本实施例中,还可以集成客户端至项目中,然后通过在代码中调用客户端的接口api,从而实现对服务端的远程调用。执行数据处理程序,然后实现:接收客户端发送的创建修改表对应的第一控制命令。客户端通过发送控制命令实现对服务端中的数据的写入、更新、删除等操作,也就是实现对服务端的控制;客户端与服务端通过rpc进行交互。在正式交互之前,也就是客户端向服务端进发送第一控制命令,进而进行数据处理之前,一般都需要进行鉴权操作。具体的,在接收客户端发送的创建修改表对应的第一控制命令之前,处理器401还可以用于执行数据处理程序,以实现:接收客户端发送的密钥,并通过密钥对客户端进行鉴权;鉴权通过后,允许客户端发送命令。为了保证系统的安全,避免其他非本数据处理系统的其他客户端发送命令对服务端中的数据进行恶意篡改,还可以对客户端的权限进行鉴定。具体的,在进行鉴权之前,服务端和客户端会根据实际权限,为各个客户端分配确定的密钥,这个密钥对于不同的,且都具有权限的客户端而言可以相同,也可以不同,但是对于不具备权限的客户端则无从知晓密钥的内容。在进行鉴权时,服务端接收客户端所发送的,分配给客户端的密钥,来对客户端进行鉴权,鉴权的具体过程可以包括:将该密钥与预存在服务端的,符合鉴权要求的密钥进行比对,若比对结果为满足要求,则输出鉴权通过的结果,即该客户端的具有管理服务端的权限。其中,比对结果满足要求可以是,客户端提供的密钥与服务端预存的密钥一致,或者客户端提供的密钥,与服务端预存的密钥匹配,这个匹配可以结合客户端的标识,如mac地址,ip地址等等,匹配的含义则可以包括客户端提供的密钥与服务端预存的密钥的组合满足预设规则等等。具体的,对客户端的鉴权方式可以根据具体的应用场景选择合适的方式,本实施例并不对其进行具体的限定。客户端所发送的创建修改表对应的第一控制命令,所指的是,该第一控制命令对应于创建表,或者修改表。创建表和修改表的命令都是针对hive而言的,即客户端所要进行的控制是在hive中创建或者修改表。在hive中创建的表里,实体表可供用户查询数据,映射表则是与实体表对应的表,可以帮助实体表进行更新操作。客户端所发送的第一控制命令是通过rpc发送的,由于hive可直接通过sql查询,因此,第一控制命令在服务端也以sql方式进行传递。在本实施例中,执行数据处理程序,然后实现:对第一控制命令进行解析,判断是否需要去重,生成判断结果。解析第一控制命令,就是解析通过sql方式传递的第一控制命令中所包含的语句。判断是否需要去重,则是指即将创建的表,是否需要进行去重的操作。简而言之,在hive中创建的表中,并不是所有的表都是需要对同样的数据进行区分的,有的表允许有重复的数据,也就是不需要进行更新操作,而有的表,则需要进行更新操作,对于需要进行更新操作的表,就是需要进行去重的表,即去掉重复的表,保留更新后的表。在本实施例中,通过第一控制命令来区分,创建的表是否需要进行去重操作。在一些可行的实施例中,可以通过在第一控制命令中添加norepeat字段与否,来判定是否需要进行去重操作。norepeat,即无重复,表示需要去重,而如果没有添加这个字段,则表示无需去重。例如,具体的一种实现方式是:如果sql语句中包括字段:create[norepeat]tabletable_name…,则说明待创建的表是需要去重的表。值得一提的是,采用这种方式仅仅是本实施例中一个可行的方案,实际上完全可以采用其他方式进行,比如将norepeat字段替换成update等等其他字段,或者仅仅是一个简单的标记,只要能够将去重和不去重的待创建的表进行区分即可。进一步的,在本实施例中,对第一控制命令进行解析,判断是否包含预设字段,生成判断结果可以包括:解析第一控制命令中,是否包含norepeat字段;判断结果包括是与否。也就是说,由于客户端发送的第一控制命令中,通过添加norepeat字段与否,来表征待创建的表是否需要去重,那么,就据此来解析其中的字段是否包括了norepeat字段,并根据解析的结果,生成判断结果。若是,则判断结果为是,表示待创建的表需要去重;若否,则判断结果为否,表示不需要去重。相应的,根据判断结果对应的在数据仓库基础构架和/或海杜普数据库中创建表可以包括:若判断结果为是,则在hive中创建实体表和对应的映射表,以及在hbase中创建对应的索引表;若判断结果为否,则直接在hive中创建实体表。实体表是可供用户查询数据的表,是hive中的主体,映射表则与实体表对应,是实体表的一种映射;索引表创建于hbase中,与映射表相对应,索引表与映射表的结构一致。索引表具体可以是以首字段为rowkey的索引表,来保存索引对应的数据,利用rowkey来保证数据的唯一性。此外,在本实施例中,在根据判断结果对应的在数据仓库基础构架和/或海杜普数据库中创建表之后,处理器401还可以用于执行数据处理程序,以实现:接收客户端发送的添加和/修改数据对应的第二控制命令;在索引表中,查找是否存在于第二控制命令对应的表的名称;若是,则将待添加和/或修改的数据进行去重处理后,写入实体表中。在创建表之后,如果有数据要写入创建的表,需确定第二控制命令对应的表的名称,比如,第二控制命令中所包括的table_name…这样的字段,就可以确定表的名称,根据确定的表的名称,在索引表中查找是否存在该表的名称一致的表。由于只有需要去重的表,才会在hbase中创建索引表,因此,如果查找到不存在,说明第二控制命令对应的表是一个新表,或者是不需要去重的表,不管是哪种情况,都可以直接将这个表添加到hive中,即在hive中创建一个对应的实体表。如果在索引表中查找到了一致的表,则说明该表是需要进行去重的表,那么,通过hive中的映射表,将该表的内容进行去重处理后,再写入实体表中。在本实施例中,去重处理可以通过hive中的映射表和hbase中的索引表来进行,具体的,将待添加和/或修改的数据进行去重处理后,写入实体表中可以包括:将待添加和/或修改的数据通过映射表保存至索引表中;在索引表中,通过待添加和/或修改的数据的对应的表进行更新;将更新后的索引表的内容,重写入实体表中。利用hbase可更新的特点,将原来的索引表进行更新,更新之后的结果再重写入实体表中,从而实现了对hive中实体表的更新。此外,如果sql解析异常或者连接hbase、hive组件异常时,可以返回异常代码给客户端,客户端抛出异常至控制台,由控制台来进行解决,或者控制台通知运维人员来维护。本实施例提供了一种数据处理设备,确认已部署的hive和hbase,接收客户端发送的创建修改表对应的第一控制命令,对第一控制命令进行解析,判断是否需要去重,生成判断结果,根据判断结果对应的在hive和/或hbase中创建表。通过本实施例的实施,通过hbase的应用,以及在创建时判断是否需要去重,从而为数据仓库基础构架中的实体表的数据更新提供了便利,减小了维护成本。第四实施例本实施例提供了一种计算机可读存储介质,该计算机可读存储介质存储有一个或者多个程序,该一个或者多个程序可被一个或者多个处理器执行,以实现:确认已部署的数据仓库基础构架和海杜普数据库;接收客户端发送的修改创建表对应的第一控制命令;对第一控制命令进行解析,判断是否需要去重,生成判断结果;根据判断结果对应的在数据仓库基础构架和/或海杜普数据库中创建表。在本实施例中,一个或者多个程序被一个或者多个处理器执行,首先实现:确认已部署的hive和hbase。这两个数据库可以整合为一个组件,一般部署在服务器上。该组件分别包括服务端和客户端。服务端主要完成与hbase,hive的结构的调用,完成创建、删除、执行sql语句等功能。客户端则在远程进行对服务端的远程调用,用户可以通过运行壳黄栓在命令行中完成操作,无需直接操作服务端,就可以完成所需的数据的写入、更新等过程。此外,在本实施例中,还可以集成客户端至项目中,然后通过在代码中调用客户端的接口api,从而实现对服务端的远程调用。一个或者多个程序被一个或者多个处理器执行,然后实现:接收客户端发送的创建修改表对应的第一控制命令。客户端通过发送控制命令实现对服务端中的数据的写入、更新、删除等操作,也就是实现对服务端的控制;客户端与服务端通过rpc进行交互。在正式交互之前,也就是客户端向服务端进发送第一控制命令,进而进行数据处理之前,一般都需要进行鉴权操作。具体的,在接收客户端发送的创建修改表对应的第一控制命令之前,一个或者多个程序被一个或者多个处理器执行,还可以实现:接收客户端发送的密钥,并通过密钥对客户端进行鉴权;鉴权通过后,允许客户端发送命令。为了保证系统的安全,避免其他非本数据处理系统的其他客户端发送命令对服务端中的数据进行恶意篡改,还可以对客户端的权限进行鉴定。具体的,在进行鉴权之前,服务端和客户端会根据实际权限,为各个客户端分配确定的密钥,这个密钥对于不同的,且都具有权限的客户端而言可以相同,也可以不同,但是对于不具备权限的客户端则无从知晓密钥的内容。在进行鉴权时,服务端接收客户端所发送的,分配给客户端的密钥,来对客户端进行鉴权,鉴权的具体过程可以包括:将该密钥与预存在服务端的,符合鉴权要求的密钥进行比对,若比对结果为满足要求,则输出鉴权通过的结果,即该客户端的具有管理服务端的权限。其中,比对结果满足要求可以是,客户端提供的密钥与服务端预存的密钥一致,或者客户端提供的密钥,与服务端预存的密钥匹配,这个匹配可以结合客户端的标识,如mac地址,ip地址等等,匹配的含义则可以包括客户端提供的密钥与服务端预存的密钥的组合满足预设规则等等。具体的,对客户端的鉴权方式可以根据具体的应用场景选择合适的方式,本实施例并不对其进行具体的限定。客户端所发送的创建修改表对应的第一控制命令,所指的是,该第一控制命令对应于创建表,或者修改表。创建表和修改表的命令都是针对hive而言的,即客户端所要进行的控制是在hive中创建或者修改表。在hive中创建的表里,实体表可供用户查询数据,映射表则是与实体表对应的表,可以帮助实体表进行更新操作。客户端所发送的第一控制命令是通过rpc发送的,由于hive可直接通过sql查询,因此,第一控制命令在服务端也以sql方式进行传递。一个或者多个程序被一个或者多个处理器执行,然后实现:对第一控制命令进行解析,判断是否需要去重,生成判断结果。解析第一控制命令,就是解析通过sql方式传递的第一控制命令中所包含的语句。判断是否需要去重,则是指即将创建的表,是否需要进行去重的操作。简而言之,在hive中创建的表中,并不是所有的表都是需要对同样的数据进行区分的,有的表允许有重复的数据,也就是不需要进行更新操作,而有的表,则需要进行更新操作,对于需要进行更新操作的表,就是需要进行去重的表,即去掉重复的表,保留更新后的表。在本实施例中,通过第一控制命令来区分,创建的表是否需要进行去重操作。在一些可行的实施例中,可以通过在第一控制命令中添加norepeat字段与否,来判定是否需要进行去重操作。norepeat,即无重复,表示需要去重,而如果没有添加这个字段,则表示无需去重。例如,具体的一种实现方式是:如果sql语句中包括字段:create[norepeat]tabletable_name…,则说明待创建的表是需要去重的表。值得一提的是,采用这种方式仅仅是本实施例中一个可行的方案,实际上完全可以采用其他方式进行,比如将norepeat字段替换成update等等其他字段,或者仅仅是一个简单的标记,只要能够将去重和不去重的待创建的表进行区分即可。进一步的,在本实施例中,对第一控制命令进行解析,判断是否包含预设字段,生成判断结果可以包括:解析第一控制命令中,是否包含norepeat字段;判断结果包括是与否。也就是说,由于客户端发送的第一控制命令中,通过添加norepeat字段与否,来表征待创建的表是否需要去重,那么,就据此来解析其中的字段是否包括了norepeat字段,并根据解析的结果,生成判断结果。若是,则判断结果为是,表示待创建的表需要去重;若否,则判断结果为否,表示不需要去重。相应的,根据判断结果对应的在数据仓库基础构架和/或海杜普数据库中创建表可以包括:若判断结果为是,则在hive中创建实体表和对应的映射表,以及在hbase中创建对应的索引表;若判断结果为否,则直接在hive中创建实体表。实体表是可供用户查询数据的表,是hive中的主体,映射表则与实体表对应,是实体表的一种映射;索引表创建于hbase中,与映射表相对应,索引表与映射表的结构一致。索引表具体可以是以首字段为rowkey的索引表,来保存索引对应的数据,利用rowkey来保证数据的唯一性。此外,在本实施例中,在根据判断结果对应的在数据仓库基础构架和/或海杜普数据库中创建表之后,一个或者多个程序被一个或者多个处理器执行,还可以实现:接收客户端发送的添加和/修改数据对应的第二控制命令;在索引表中,查找是否存在于第二控制命令对应的表的名称;若是,则将待添加和/或修改的数据进行去重处理后,写入实体表中。在创建表之后,如果有数据要写入创建的表,需确定第二控制命令对应的表的名称,比如,第二控制命令中所包括的table_name…这样的字段,就可以确定表的名称,根据确定的表的名称,在索引表中查找是否存在该表的名称一致的表。由于只有需要去重的表,才会在hbase中创建索引表,因此,如果查找到不存在,说明第二控制命令对应的表是一个新表,或者是不需要去重的表,不管是哪种情况,都可以直接将这个表添加到hive中,即在hive中创建一个对应的实体表。如果在索引表中查找到了一致的表,则说明该表是需要进行去重的表,那么,通过hive中的映射表,将该表的内容进行去重处理后,再写入实体表中。在本实施例中,去重处理可以通过hive中的映射表和hbase中的索引表来进行,具体的,将待添加和/或修改的数据进行去重处理后,写入实体表中可以包括:将待添加和/或修改的数据通过映射表保存至索引表中;在索引表中,通过待添加和/或修改的数据的对应的表进行更新;将更新后的索引表的内容,重写入实体表中。利用hbase可更新的特点,将原来的索引表进行更新,更新之后的结果再重写入实体表中,从而实现了对hive中实体表的更新。此外,如果sql解析异常或者连接hbase、hive组件异常时,可以返回异常代码给客户端,客户端抛出异常至控制台,由控制台来进行解决,或者控制台通知运维人员来维护。本实施例提供了一种数据处理设备,确认已部署的hive和hbase,接收客户端发送的创建修改表对应的第一控制命令,对第一控制命令进行解析,判断是否需要去重,生成判断结果,根据判断结果对应的在hive和/或hbase中创建表。通过本实施例的实施,通过hbase的应用,以及在创建时判断是否需要去重,从而为数据仓库基础构架中的实体表的数据更新提供了便利,减小了维护成本。上面结合附图对本发明的实施例进行了描述,但是本发明并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本发明的启示下,在不脱离本发明宗旨和权利要求所保护的范围情况下,还可做出很多形式,这些均属于本发明的保护之内。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1