一种基于hive的历史数据存档与查询方法技术

技术编号:10528641 阅读:249 留言:0更新日期:2014-10-15 10:53
本发明专利技术提出一种基于hive的历史数据存档与查询方法,首先建立hive表,然后使用ETL工具导出源数据并验证,通过验证后将源数据导入hive表,以及基于Thrift接口从hive表中查询历史数据。本发明专利技术提出的所述方法能够向其它软件提供接口,并完成定制化历史数据导入和数据查询的功能。

【技术实现步骤摘要】
【专利摘要】本专利技术提出,首先建立hive表,然后使用ETL工具导出源数据并验证,通过验证后将源数据导入hive表,以及基于Thrift接口从hive表中查询历史数据。本专利技术提出的所述方法能够向其它软件提供接口,并完成定制化历史数据导入和数据查询的功能。【专利说明】-种基于hive的历史数据存档与查询方法
本专利技术涉及计算机存储
,具体涉一种基于hive的历史数据存档与查询 方法。
技术介绍
大数据(big data),或称巨量资料,指的是所涉及的资料规模巨大到无法透过目 前主流软件工具,在合理时间内达到撷取、管理、处理、并整理成为帮助企业经营决策更积 极目的的资讯。近年大数据技术在互联网上的应用逐渐成熟,在不知不觉中已开始改变我 们的生活。同时大数据技术的应用范围也开始向其它行业扩充,当然这也带来新的技术问 题。 Hadoop Distributed File System(HDFS)被设计成适合运行在通用硬件 (commodity hardware)上的分布式文件系统。HDFS是一个高度容错性的系统,适合部署在 廉价的机器上。HDFS能提供高吞吐量的数据访问,非常适合大规模数据集上的应用。 thrift是一个软件框架,用来进行可扩展且跨语言的服务的开发。它结合了功能 强大的软件堆栈和代码生成引擎,以构建在C++, Java, Python, PHP, Ruby, Erlang, Perl, Has kell, C#, Cocoa, JavaScript, Node, js, Smalltalk, and OCaml 这些编程语言间无缝结合的、 1?效的服务。 hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张 数据库表,并提供简单的sql查询功能,可以将sql语句转换为MapReduce任务进行运行。 其优点是学习成本低,可以通过类SQL语句快速实现简单的MapReduce统计,不必开发专门 的MapReduce应用,十分适合数据仓库的统计分析。并且它仍然利用HDFS文件系统作为底 层文件存储系统,这就保证了存储系统的稳定性和易扩展性。 随着金融、电信、能源等传统产业在运营、管理过程中产生的数据量逐年增多,这 些数据的大小超出了典型数据库软件工具收集、存储、管理和分析的能力,大数据技术在传 统产业中的应用也提到了日程。特别是金融行业亟需一种高效、安全的方法存储他们日益 增加的交易和管理数据。
技术实现思路
为了解决上述技术问题,本专利技术提出, 包括: 1)建立hive表,并在hive表中建立分区; 2)使用ETL工具从其它数据库中导出源数据,将源数据作为文件中的记录保存在 文件中,即从其他数据库中导出的一条源数据对应于文件中的一条记录; 3)对文件中的记录进行验证; 4)通过验证后,将文件中的记录导入临时表,再将临时表中的数据插入有分区结 构的hive表; 5)基于Thrift接口从hive表中查询历史数据。 特别地,所述步骤2)还包括:文件中的记录的每列采用' | + | '进行分隔,记录的每 行之间采用' I-I '标记结尾,并跟上回车符;上述' I + I '称为分隔符,' I-I '称为分行符。 特别地,所述步骤3)中所述验证过程具体为:根据步骤1)中建立的hive表的列 数信息统计文件中记录的列数信息是否正确,并且验证所述分隔符和分行符是否无误。 特别地,所述步骤4)中所述将临时表中的数据插入有分区结构的hive表之前还 包括去除所述分行符的步骤。 特别地,所述步骤4)中所述将临时表中的数据插入有分区结构的hive表包括:使 用java调用shell脚本,在脚本中采用add jar语句将更改后的hive jar包导入hive中。 特别地,所述步骤5)中基于Thrift接口执行历史数据查询,具体为:客户端将查 询请求翻译成thrift格式的命令,通过hive server2连接方式将所述thrift格式的命令 发送到服务器,所述服务器将所述thrift格式的命令翻译成服务器可以识别的命令格式 并执行,返回查询数据。 本专利技术提出的方法,能够向其它软件提供接口,并完成定制化历史数据导入和数 据查询的功能。 【专利附图】【附图说明】 图1为本专利技术提出的流程图。 图2为本专利技术提出的hive server2运行原理示意图。 【具体实施方式】 下面参照附图1,描述实现本专利技术一个实施例提出的方法,步骤如下: (一)数据导入存储方法 包含如下三个步骤:(1)建立hive表;(2)检验ETL导出数据的正确性;(3)数据 导入。本技术大部分的功能使用脚本语言实现,整体代码有着方便、简洁的特点。 1)建立 hive 表 为了使代码更加简便,并且有很好的交互性,在本专利技术中建表和数据导入使用 java调用脚本的方式完成,用户可以使用java接口调用相应的脚本来定制构建表结构。这 种建表方式使得开发人员在hive之上完成功能开发,而不需要对hive有很深的专业知识。 2)使用ETL导出数据并检查正确性 使用ETL工具从其它数据库中导出源数据,将源数据作为文件中的记录保存在文 件中,即从其他数据库中导出的一条源数据对应于文件中的一条记录,导出文件名为表名 加日期的格式,而文件中的记录采用变长记录格式,即记录的每列采用'1 + 1'进行分隔,而 每行之间采用' I -1 '标记结尾,并跟上回车符;上述' I +1 '称为分隔符,' I -1 '称为分行符。 在此步骤中需要对文件中的记录进行验证,所述验证过程为:首先根据上一步的 建立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 serve本文档来自技高网
...

【技术保护点】
一种基于hive的历史数据存档与查询方法,其特征在于,包括:1)建立hive表,并在hive表中建立分区;2)使用ETL工具从其它数据库中导出源数据,将源数据作为文件中的记录保存在文件中,即从其他数据库中导出的一条源数据对应于文件中的一条记录;3)对文件中的记录进行验证;4)通过验证后,将文件中的记录导入临时表,再将临时表中的数据插入有分区结构的hive表;5)基于Thrift接口从hive表中查询历史数据。

【技术特征摘要】

【专利技术属性】
技术研发人员:卢军佐曹连超辛国茂亓开元赵仁明房体盈
申请(专利权)人:浪潮北京电子信息产业有限公司
类型:发明
国别省市:北京;11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1