CN201410321111.2
2014.07.07
CN104102701A
2014.10.15
授权
有权
授权|||实质审查的生效IPC(主分类):G06F 17/30申请日:20140707|||公开
G06F17/30
浪潮(北京)电子信息产业有限公司
卢军佐; 曹连超; 辛国茂; 亓开元; 赵仁明; 房体盈
100085 北京市海淀区上地信息路2号2-1号C栋1层
北京安信方达知识产权代理有限公司 11262
王丹;李丹
本发明提出一种基于hive的历史数据存档与查询方法,首先建立hive表,然后使用ETL工具导出源数据并验证,通过验证后将源数据导入hive表,以及基于Thrift接口从hive表中查询历史数据。本发明提出的所述方法能够向其它软件提供接口,并完成定制化历史数据导入和数据查询的功能。
1. 一种基于hive的历史数据存档与查询方法,其特征在于,包括:1)建立hive表,并在hive表中建立分区;2)使用ETL工具从其它数据库中导出源数据,将源数据作为文件中的记录保存在文件中,即从其他数据库中导出的一条源数据对应于文件中的一条记录;3)对文件中的记录进行验证;4)通过验证后,将文件中的记录导入临时表,再将临时表中的数据插入有分区结构的hive表;5)基于Thrift接口从hive表中查询历史数据。2. 如权利要求1所述的方法,其特征在于:所述步骤2)还包括:文件中的记录的每列采用‘|+|’进行分隔,记录的每行之间采用‘|-|’标记结尾,并跟上回车符;上述‘|+|’称为分隔符,‘|-|’称为分行符。3. 如权利要求2所述的方法,其特征在于:所述步骤3)中所述验证具体为:根据步骤1)中建立的hive表的列数信息统计文件中记录的列数信息是否正确,并且验证所述分隔符和分行符是否无误。4. 如权利要求1至3任一项所述的方法,其特征在于:所述步骤4)中所述将临时表中的数据插入有分区结构的hive表之前还包括去除所述分行符的步骤。5. 如权利要求4所述的方法,其特征在于:所述步骤4)中所述将临时表中的数据插入有分区结构的hive表包括:使用java调用shell脚本,在脚本中采用add jar语句将更改后的hive jar包导入hive中。6. 如权利要求1,2,3或5所述的方法,其特征在于:所述步骤5)具体为: 客户端将查询请求翻译成thrift格式的命令,通过hive server2连接方式将所述thrift格式的命令发送到服务器,所述服务器将所述thrift格式的命令翻译成服务器可以识别的命令格式并执行,返回查询数据。
一种基于hive的历史数据存档与查询方法 技术领域 本发明涉及计算机存储技术领域,具体涉一种基于hive的历史数据存档与查询方法。 背景技术 大数据(big data),或称巨量资料,指的是所涉及的资料规模巨大到无法透过目前主流软件工具,在合理时间内达到撷取、管理、处理、并整理成为帮助企业经营决策更积极目的的资讯。近年大数据技术在互联网上的应用逐渐成熟,在不知不觉中已开始改变我们的生活。同时大数据技术的应用范围也开始向其它行业扩充,当然这也带来新的技术问题。 Hadoop Distributed File System(HDFS)被设计成适合运行在通用硬件(commodity hardware)上的分布式文件系统。HDFS是一个高度容错性的系统,适合部署在廉价的机器上。HDFS能提供高吞吐量的数据访问,非常适合大规模数据集上的应用。 thrift是一个软件框架,用来进行可扩展且跨语言的服务的开发。它结合了功能强大的软件堆栈和代码生成引擎,以构建在C++,Java,Python,PHP,Ruby,Erlang,Perl,Haskell,C#,Cocoa,JavaScript,Node.js,Smalltalk,and OCaml这些编程语言间无缝结合的、高效的服务。 hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的sql查询功能,可以将sql语句转换为MapReduce任务进行运行。其优点是学习成本低,可以通过类SQL语句快速实现简单的MapReduce统计,不必开发专门的MapReduce应用,十分适合数据仓库的统计分析。并且它仍然利用HDFS文件系统作为底层文件存储系统, 这就保证了存储系统的稳定性和易扩展性。 随着金融、电信、能源等传统产业在运营、管理过程中产生的数据量逐年增多,这些数据的大小超出了典型数据库软件工具收集、存储、管理和分析的能力,大数据技术在传统产业中的应用也提到了日程。特别是金融行业亟需一种高效、安全的方法存储他们日益增加的交易和管理数据。 发明内容 为了解决上述技术问题,本发明提出一种基于hive的历史数据存档与查询方法,包括: 1)建立hive表,并在hive表中建立分区; 2)使用ETL工具从其它数据库中导出源数据,将源数据作为文件中的记录保存在文件中,即从其他数据库中导出的一条源数据对应于文件中的一条记录; 3)对文件中的记录进行验证; 4)通过验证后,将文件中的记录导入临时表,再将临时表中的数据插入有分区结构的hive表; 5)基于Thrift接口从hive表中查询历史数据。 特别地,所述步骤2)还包括:文件中的记录的每列采用‘|+|’进行分隔,记录的每行之间采用‘|-|’标记结尾,并跟上回车符;上述‘|+|’称为分隔符,‘|-|’称为分行符。 特别地,所述步骤3)中所述验证过程具体为:根据步骤1)中建立的hive表的列数信息统计文件中记录的列数信息是否正确,并且验证所述分隔符和分行符是否无误。 特别地,所述步骤4)中所述将临时表中的数据插入有分区结构的hive 表之前还包括去除所述分行符的步骤。 特别地,所述步骤4)中所述将临时表中的数据插入有分区结构的hive表包括:使用java调用shell脚本,在脚本中采用add jar语句将更改后的hive jar包导入hive中。 特别地,所述步骤5)中基于Thrift接口执行历史数据查询,具体为:客户端将查询请求翻译成thrift格式的命令,通过hive server2连接方式将所述thrift格式的命令发送到服务器,所述服务器将所述thrift格式的命令翻译成服务器可以识别的命令格式并执行,返回查询数据。 本发明提出的方法,能够向其它软件提供接口,并完成定制化历史数据导入和数据查询的功能。 附图说明 图1为本发明提出的一种基于hive的历史数据存档与查询方法流程图。 图2为本发明提出的hive server2运行原理示意图。 具体实施方式 下面参照附图1,描述实现本发明一个实施例提出的方法,步骤如下: (一)数据导入存储方法 包含如下三个步骤:(1)建立hive表;(2)检验ETL导出数据的正确性;(3)数据导入。本技术大部分的功能使用脚本语言实现,整体代码有着方便、简洁的特点。 1)建立hive表 为了使代码更加简便,并且有很好的交互性,在本发明中建表和数据导入使用java调用脚本的方式完成,用户可以使用java接口调用相应的脚本来定制构建表结构。这种建表方式使得开发人员在hive之上完成功能开发, 而不需要对hive有很深的专业知识。 2)使用ETL导出数据并检查正确性 使用ETL工具从其它数据库中导出源数据,将源数据作为文件中的记录保存在文件中,即从其他数据库中导出的一条源数据对应于文件中的一条记录,导出文件名为表名加日期的格式,而文件中的记录采用变长记录格式,即记录的每列采用‘|+|’进行分隔,而每行之间采用‘|-|’标记结尾,并跟上回车符;上述‘|+|’称为分隔符,‘|-|’称为分行符。 在此步骤中需要对文件中的记录进行验证,所述验证过程为:首先根据上一步的建立hive表的列数信息统计文件中列数是否正确,并且验证分隔符和分行符是否无误。 3)数据导入 由于hive不支持多字节的分行符,所以在将文件中的记录数据导入hive表前,需将文件中的分行符去除,这一功能是由java完成。 金融数据中存储着大量特殊符号,所以该类数据的分隔符最好选用复杂的多分隔符以便和金融数据中的特殊字符区分,但是hive thrift并不支持多分隔符的数据导入,代码中使用java调用shell脚本的方式解决该问题,java首先调用shell脚本,在脚本中采用add jar语句将更改后的hive jar包导入hive中,使得hive thrift支持多分隔符的数据导入。 历史数据的查询中最重要的是围绕日期的查询,所以本发明公开的实施例提出的方法采用了分区的格式以提高基于日期的查询速度。向分区表中导入数据需要首先创建临时表,并将数据导入临时表中;然后通过insert语句将临时表中的数据插入第1)步中建立的hive表。 (二)数据查询方法 针对hive jdbc接口数据传输较慢的缺点,本发明实施例提出的数据查询方法使用了Thrift接口,但是与thrift对应的hive服务器(hive sever)极其不稳定,经常会莫名奇妙假死,导致客户端(client)所有的连接都被阻塞(block)。为解决这一技术问题,本发明公开的实施例提出使用hive server2连接方式,所述hive server2连接方式是大数据平台工具hive开启的服务,该服务负责响应符合thrift框架的查询请求,图2是hive server2运行原理,客户端将查询请求翻译成thrift格式的命令,服务器端将thrift格式的命令翻译为服务器可以识别的命令格式,并运行该命令,返回查询数据。使用hive server2连接方式能够达到更好的连接稳定性。 以上所述仅为本申请的优选实施例而已,并不用于限制本申请,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
《一种基于HIVE的历史数据存档与查询方法.pdf》由会员分享,可在线阅读,更多相关《一种基于HIVE的历史数据存档与查询方法.pdf(7页珍藏版)》请在专利查询网上搜索。
本发明提出一种基于hive的历史数据存档与查询方法,首先建立hive表,然后使用ETL工具导出源数据并验证,通过验证后将源数据导入hive表,以及基于Thrift接口从hive表中查询历史数据。本发明提出的所述方法能够向其它软件提供接口,并完成定制化历史数据导入和数据查询的功能。 。
copyright@ 2017-2020 zhuanlichaxun.net网站版权所有经营许可证编号:粤ICP备2021068784号-1