公开/公告号CN112650754A
专利类型发明专利
公开/公告日2021-04-13
原文格式PDF
申请/专利权人 浪潮云信息技术股份公司;
申请/专利号CN202011551010.6
申请日2020-12-24
分类号G06F16/22(20190101);G06F16/25(20190101);
代理机构37100 济南信达专利事务所有限公司;
代理人孙晶伟
地址 250100 山东省济南市高新区浪潮路1036号浪潮科技园S01号楼
入库时间 2023-06-19 10:35:20
技术领域
本发明公开一种方法,涉及数据转换技术领域,具体地说是一种关系型数据库的数据全量导入Hive的方法。
背景技术
传统的数据大多存储在关系型数据库(如MySQL、Oracle等)中,这些关系型数据库能支持字符、数值等形式多样的数据类型,不同关系型数据库对字符、数值等数据类型的处理不尽相同。
目前大部分系统采用数据采集工具如Flume、NiFi等采集关系型数据库的数据并写入大数据存储Hive,在数据处理过程中仍然存在数据类型转换的问题,导致整个数据导入流程是有差异性的,无法形成一套流程来实现数据导入,增加了开发成本和运维成本。
发明内容
本发明针对现有技术的问题,提供一种关系型数据库的数据全量导入 Hive的方法,旨在简化各种关系型数据库的数据导入Hive时的复杂性。
本发明提出的具体方案是:
一种关系型数据库的数据全量导入Hive的方法,采用string字段类型创建Hive中间表,将关系型数据库的数据导入Hive中间表,
根据关系型数据库的数据表字段类型,将关系型数据库的表字段类型映射为Hive目标表的字段类型,创建Hive目标表,
采用HiveSQL将Hive中间表的数据导入Hive目标表,完成关系型数据库的数据全量导入Hive。
优选地,所述的一种关系型数据库的数据全量导入Hive的方法中参照关系型数据库的数据表定义Hive中间表,将关系型数据库的数据表结构转换为Hive的建表语句,采用string字段类型创建Hive中间表。
优选地,所述的一种关系型数据库的数据全量导入Hive的方法中定义 Hive数据库,根据关系型数据库的数据表字段类型,分析关系型数据库数据表支持的字段类型和Hive目标表的字段类型的映射关系,将关系型数据库的数据表结构转换为Hive的建表语句,创建Hive目标表。
优选地,所述的一种关系型数据库的数据全量导入Hive的方法中将关系型数据库的数据表中char字段类型及varchar字段类型映射为Hive目标表中string字段类型,将关系型数据库的数据表中numeric字段类型映射为Hive目标表的decimal字段类型。
一种关系型数据库的数据全量导入Hive的系统,包括包括建表模块及导入模块,建表模块包括Hive中间表构建模块和Hive目标表构建模块,
Hive中间表构建模块采用string字段类型创建Hive中间表,将关系型数据库的数据导入Hive中间表,
Hive目标表构建模块根据关系型数据库的数据表字段类型,将关系型数据库的表字段类型映射为Hive目标表的字段类型,创建Hive目标表,
导入模块采用HiveSQL将Hive中间表的数据导入Hive目标表,完成关系型数据库的数据全量导入Hive。
优选地,所述的一种关系型数据库的数据全量导入Hive的系统中建表模块参照关系型数据库的数据表定义Hive中间表,将关系型数据库的数据表结构转换为Hive的建表语句,采用string字段类型创建Hive中间表。
优选地,所述的一种关系型数据库的数据全量导入Hive的系统中建表模块定义Hive数据库,根据关系型数据库的数据表字段类型,分析关系型数据库数据表支持的字段类型和Hive目标表的字段类型的映射关系,将关系型数据库的数据表结构转换为Hive的建表语句,创建Hive目标表。
优选地,所述的一种关系型数据库的数据全量导入Hive的系统中建表模块将关系型数据库的数据表中char字段类型及varchar字段类型映射为 Hive目标表中string字段类型,将关系型数据库的数据表中numeric字段类型映射为Hive目标表的decimal字段类型。
一种关系型数据库的数据全量导入Hive的装置,包括至少一个存储器和至少一个处理器;
所述至少一个存储器,用于存储机器可读程序;
所述至少一个处理器,用于调用所述机器可读程序,执行所述的一种关系型数据库的数据全量导入Hive的方法。
本发明的有益之处是:
本发明提供一种关系型数据库的数据全量导入Hive的方法,将关系型数据库的数据导入Hive中间表,将关系型数据库的表字段类型映射为Hive 目标表的字段类型,创建Hive目标表,采用HiveSQL将Hive中间表的数据导入Hive目标表,关系型数据库的数据全量导入Hive;通过本发明方法能够快速简便地完成关系型数据库内全量数据与Hive内数据的格式转换,过程简捷不易出错,能够达到一次开发,重复使用的效果,节省开发成本和运维成本。可广泛应用,尤其适合如零售行业等涉及金额的处理的场景,能够保证数值类型的数据精确。
附图说明
图1是本发明方法中数据转换示意图;
图2是本发明方法流程示意图。
图中①:创建Hive中间表:Hive中间表的字段类型采用string;将关系型数据库的数据导入Hive中间表。②:创建 Hive目标表:将关系型数据库的表字段类型映射为Hive目标表的字段类型;采用HiveSQL将Hive中间表的数据导入Hive目标表。
具体实施方式
下面结合附图和具体实施例对本发明作进一步说明,以使本领域的技术人员可以更好地理解本发明并能予以实施,但所举实施例不作为对本发明的限定。
每种关系型数据库(如MySQL、Oracle等)都支持多种数据类型(如字符类型、数值类型、日期类型等),当业务要求做数据汇聚以实现大数据分析的目的时,由于原有关系型数据库的表字段都具有明确的业务含义,所以将数据采集到大数据存储Hive时,也要求保留原始表字段类型,比如关系型数据库表中的数值类型的数据存储到Hive时仍要求是数值类型,能支持加、减、乘、除等数值型的函数计算。受限于每种关系型数据库、大数据存储Hive支持的数据类型不同,将关系型数据库的数据全量导入Hive时,对数据类型的处理也是不尽相同的,在这种差异性的约束下,数据导入Hive 的工作变得复杂且极易出错。
而本发明提供一种关系型数据库的数据全量导入Hive的方法,采用 string字段类型创建Hive中间表,将关系型数据库的数据导入Hive中间表,
根据关系型数据库的数据表字段类型,将关系型数据库的表字段类型映射为Hive目标表的字段类型,创建Hive目标表,
采用HiveSQL将Hive中间表的数据导入Hive目标表,完成关系型数据库的数据全量导入Hive。通过本发明方法能够快速简便地完成关系型数据库内全量数据与Hive内数据的格式转换,过程简捷不易出错,能够达到一次开发,重复使用的效果,节省开发成本和运维成本。可广泛应用,尤其适合如零售行业等涉及金额的处理的场景,能够保证数值类型的数据精确。
具体应用中,目前Hive支持的字符类型有VARCHAR、CHAR、STRING,而关系型数据库支持的字符类型也各有不同,如MySQL数据库支持的字符类型有TEXT等,Oracle数据库支持的字符类型有VARCHAR、CHAR、LONG等。
在本发明的一些实施例中,采用string字段类型创建Hive中间表, STRING类型的字段能够支持各种关系型数据库的字符类型的数据的存储,能够避免数据在从关系型数据库全量导入Hive数据库的过程中因数据类型转换导致的数值类型的数据的精度丢失;同时也能普遍适用于各种关系型数据库的各种数值类型,减少数据转换的开发成本,减少数值转换带来的维护成本,因此参照关系型数据库的表定义Hive中间表,例如某关系数据库的表结构如下:
CREATE TABLE`mydb`.`tbl_test`(
`co_code`varchar(16)NOT NULL,
`user_id`varchar(32)NOT NULL,
`summ_day`varchar(8)NOT NULL,
`print_time`numeric(18,6),
PRIMARY KEY(`co_code`,`user_id`)
);
则Hive中创建字段类型为string的表来存储,Hive中间表结构如下:
CREATE TABLE`mydbstr`.`tbl_test`(
`co_code`string,
`user_id`string,
`summ_day`string,
`print_time`string
)STORED AS PARQUET;
这个过程中不用解析关系型数据库的数据类型,可采用存储过程或编写代码将关系型数据库的表结构转换为Hive的建表语句,利用string字段类型完成Hive中间表的建立,并将将关系型数据库的数据导入Hive中间表。
在上述实施的基础上,在实际业务过程中,用户更期望Hive表字段类型是可以执行函数运算的,比如数值类型、日期类型等。本发明根据关系型数据库表的字段类型来处理Hive表字段。
其中定义Hive数据库,根据关系型数据库的表字段类型构建Hive目标表。分析具体的关系型数据库支持的字段类型和Hive字段类型的映射关系,确认关系型数据库的char、varchar等映射为Hive表的string,numeric 映射为Hive表的decimal等,采用存储过程或编写代码将关系型数据库的表结构转换为Hive的建表语句,其中,Hive建表语句中各字段的数据类型和关系型数据库表字段类型相关。
上述示例的某关系型数据库的表"mydb"."tbl_test"对应的Hive表结构,其中,关系型数据库的varchar映射为Hive的string,关系型数据库的numeric映射为Hive的decimal:
CREATE TABLE`mydb`.`tbl_test`(
`co_code`string,
`user_id`string,
`summ_day`string,
`print_time`decimal(18,6)
)STORED AS PARQUET;
在Hive中创建好表之后,采用HiveSQL从Hive中间表导入数据至Hive 目标表,采用HiveSQL自身特性,实现数据类型的转换。最终,用户的数据分析都是基于Hive目标表进行的。
HiveSQL示例如下:
insert into table `mydb`.`tbl_test`select*from `mydbstr`.`tbl_test`;
完成关系型数据库的数据全量导入Hive。利用本发明方法简化各种关系型数据库的数据导入Hive时的复杂性。能够达到一次开发,重复使用的效果,节省开发成本。
本发明还提供一种关系型数据库的数据全量导入Hive的系统,包括包括建表模块及导入模块,建表模块包括Hive中间表构建模块和Hive目标表构建模块,
Hive中间表构建模块采用string字段类型创建Hive中间表,将关系型数据库的数据导入Hive中间表,
Hive目标表构建模块根据关系型数据库的数据表字段类型,将关系型数据库的表字段类型映射为Hive目标表的字段类型,创建Hive目标表,
导入模块采用HiveSQL将Hive中间表的数据导入Hive目标表,完成关系型数据库的数据全量导入Hive。
上述系统内的各模块之间的信息交互、执行过程等内容,由于与本发明方法实施例基于同一构思,具体内容可参见本发明方法实施例中的叙述,此处不再赘述。
同时本发明提供一种关系型数据库的数据全量导入Hive的装置,包括至少一个存储器和至少一个处理器;
所述至少一个存储器,用于存储机器可读程序;
所述至少一个处理器,用于调用所述机器可读程序,执行所述的一种关系型数据库的数据全量导入Hive的方法。
上述装置内的处理器的信息交互、执行可读程序过程等内容,由于与本发明方法实施例基于同一构思,具体内容可参见本发明方法实施例中的叙述,此处不再赘述。
需要说明的是,上述较佳实施例中各流程和各系统装置结构中不是所有的步骤和模块都是必须的,可以根据实际的需要忽略某些步骤或模块。各步骤的执行顺序不是固定的,可以根据需要进行调整。上述各实施例中描述的系统结构可以是物理结构,也可以是逻辑结构,即,有些模块可能由同一物理实体实现,或者,有些模块可能分由多个物理实体实现,或者,可以由多个独立设备中的某些部件共同实现。
以上所述实施例仅是为充分说明本发明而所举的较佳的实施例,本发明的保护范围不限于此。本技术领域的技术人员在本发明基础上所作的等同替代或变换,均在本发明的保护范围之内。本发明的保护范围以权利要求书为准。
机译: 用于将软件许可度量数据导入配置管理数据库(CMDB)的系统和方法
机译: 在立体图像上传输数据的方法,一种播放立体图像的方法以及一种创建立体图像文件的方法,尤其是用于最小化播放或传输立体图像所需的所需数据量
机译: 一种用于搜索至少一个这样的数据量与至少一个对象数据量之间的平衡的方法