首页> 中国专利> 一种基于hive的历史数据存档与查询方法

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

摘要

本发明提出一种基于hive的历史数据存档与查询方法,首先建立hive表,然后使用ETL工具导出源数据并验证,通过验证后将源数据导入hive表,以及基于Thrift接口从hive表中查询历史数据。本发明提出的所述方法能够向其它软件提供接口,并完成定制化历史数据导入和数据查询的功能。

著录项

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2017-10-13

    授权

    授权

  • 2014-11-12

    实质审查的生效 IPC(主分类):G06F17/30 申请日:20140707

    实质审查的生效

  • 2014-10-15

    公开

    公开

说明书

技术领域

本发明涉及计算机存储技术领域,具体涉一种基于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连接方式能够达到更好的连接稳定性。

以上所述仅为本申请的优选实施例而已,并不用于限制本申请,对于本 领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和 原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护 范围之内。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号