CN104102701A - 一种基于hive的历史数据存档与查询方法 - Google Patents
一种基于hive的历史数据存档与查询方法 Download PDFInfo
- Publication number
- CN104102701A CN104102701A CN201410321111.2A CN201410321111A CN104102701A CN 104102701 A CN104102701 A CN 104102701A CN 201410321111 A CN201410321111 A CN 201410321111A CN 104102701 A CN104102701 A CN 104102701A
- Authority
- CN
- China
- Prior art keywords
- hive
- data
- file
- record
- thrift
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2458—Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
- G06F16/2474—Sequence data queries, e.g. querying versioned data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/21—Design, administration or maintenance of databases
- G06F16/219—Managing data history or versioning
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Mathematical Physics (AREA)
- Computational Linguistics (AREA)
- Software Systems (AREA)
- Probability & Statistics with Applications (AREA)
- Fuzzy Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Stored Programmes (AREA)
Abstract
本发明提出一种基于hive的历史数据存档与查询方法,首先建立hive表,然后使用ETL工具导出源数据并验证,通过验证后将源数据导入hive表,以及基于Thrift接口从hive表中查询历史数据。本发明提出的所述方法能够向其它软件提供接口,并完成定制化历史数据导入和数据查询的功能。
Description
技术领域
本发明涉及计算机存储技术领域,具体涉一种基于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)。为解决这一技术问题,本发明公开的实施例提出使用hiveserver2连接方式,所述hive server2连接方式是大数据平台工具hive开启的服务,该服务负责响应符合thrift框架的查询请求,图2是hive server2运行原理,客户端将查询请求翻译成thrift格式的命令,服务器端将thrift格式的命令翻译为服务器可以识别的命令格式,并运行该命令,返回查询数据。使用hive server2连接方式能够达到更好的连接稳定性。
以上所述仅为本申请的优选实施例而已,并不用于限制本申请,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (6)
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格式的命令翻译成服务器可以识别的命令格式并执行,返回查询数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410321111.2A CN104102701B (zh) | 2014-07-07 | 2014-07-07 | 一种基于hive的历史数据存档与查询方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410321111.2A CN104102701B (zh) | 2014-07-07 | 2014-07-07 | 一种基于hive的历史数据存档与查询方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104102701A true CN104102701A (zh) | 2014-10-15 |
CN104102701B CN104102701B (zh) | 2017-10-13 |
Family
ID=51670855
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410321111.2A Active CN104102701B (zh) | 2014-07-07 | 2014-07-07 | 一种基于hive的历史数据存档与查询方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104102701B (zh) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104376047A (zh) * | 2014-10-28 | 2015-02-25 | 浪潮电子信息产业股份有限公司 | 一种基于HBase的大表join方法 |
CN105550296A (zh) * | 2015-12-10 | 2016-05-04 | 深圳市华讯方舟软件技术有限公司 | 一种基于spark-SQL大数据处理平台的数据导入方法 |
CN106484897A (zh) * | 2016-10-21 | 2017-03-08 | 郑州云海信息技术有限公司 | 一种通过JDBC连接Hiveserver的快捷方法 |
CN106649355A (zh) * | 2015-10-30 | 2017-05-10 | 北京国双科技有限公司 | 一种数据处理方法及装置 |
CN107622088A (zh) * | 2017-08-17 | 2018-01-23 | 郑州云海信息技术有限公司 | 一种基于Hive支持多字符作为分隔符的方法 |
CN111680092A (zh) * | 2020-06-05 | 2020-09-18 | 深圳市卡数科技有限公司 | 数据导入hive表的方法、系统、服务器和存储介质 |
CN111984659A (zh) * | 2020-07-28 | 2020-11-24 | 招联消费金融有限公司 | 数据更新方法、装置、计算机设备和存储介质 |
CN112233727A (zh) * | 2020-10-29 | 2021-01-15 | 北京诺禾致源科技股份有限公司 | 数据分区存储方法及装置 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101147187A (zh) * | 2005-04-19 | 2008-03-19 | 国际商业机器公司 | 用于管理分布式异质数据源之间的复杂关系的系统和方法 |
CN102214236A (zh) * | 2011-06-30 | 2011-10-12 | 北京新媒传信科技有限公司 | 一种海量数据处理方法和系统 |
US8056054B2 (en) * | 2007-06-07 | 2011-11-08 | International Business Machines Corporation | Business information warehouse toolkit and language for warehousing simplification and automation |
CN102915373A (zh) * | 2012-11-06 | 2013-02-06 | 无锡江南计算技术研究所 | 一种数据存储方法和装置 |
CN103268336A (zh) * | 2013-05-13 | 2013-08-28 | 刘峰 | 一种快数据和大数据结合的数据处理方法及其系统 |
-
2014
- 2014-07-07 CN CN201410321111.2A patent/CN104102701B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101147187A (zh) * | 2005-04-19 | 2008-03-19 | 国际商业机器公司 | 用于管理分布式异质数据源之间的复杂关系的系统和方法 |
US8056054B2 (en) * | 2007-06-07 | 2011-11-08 | International Business Machines Corporation | Business information warehouse toolkit and language for warehousing simplification and automation |
CN102214236A (zh) * | 2011-06-30 | 2011-10-12 | 北京新媒传信科技有限公司 | 一种海量数据处理方法和系统 |
CN102915373A (zh) * | 2012-11-06 | 2013-02-06 | 无锡江南计算技术研究所 | 一种数据存储方法和装置 |
CN103268336A (zh) * | 2013-05-13 | 2013-08-28 | 刘峰 | 一种快数据和大数据结合的数据处理方法及其系统 |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104376047A (zh) * | 2014-10-28 | 2015-02-25 | 浪潮电子信息产业股份有限公司 | 一种基于HBase的大表join方法 |
CN104376047B (zh) * | 2014-10-28 | 2017-06-30 | 浪潮电子信息产业股份有限公司 | 一种基于HBase的大表join方法 |
CN106649355A (zh) * | 2015-10-30 | 2017-05-10 | 北京国双科技有限公司 | 一种数据处理方法及装置 |
CN105550296A (zh) * | 2015-12-10 | 2016-05-04 | 深圳市华讯方舟软件技术有限公司 | 一种基于spark-SQL大数据处理平台的数据导入方法 |
CN105550296B (zh) * | 2015-12-10 | 2018-10-30 | 深圳市华讯方舟软件技术有限公司 | 一种基于spark-SQL大数据处理平台的数据导入方法 |
CN106484897A (zh) * | 2016-10-21 | 2017-03-08 | 郑州云海信息技术有限公司 | 一种通过JDBC连接Hiveserver的快捷方法 |
CN107622088A (zh) * | 2017-08-17 | 2018-01-23 | 郑州云海信息技术有限公司 | 一种基于Hive支持多字符作为分隔符的方法 |
CN111680092A (zh) * | 2020-06-05 | 2020-09-18 | 深圳市卡数科技有限公司 | 数据导入hive表的方法、系统、服务器和存储介质 |
CN111984659A (zh) * | 2020-07-28 | 2020-11-24 | 招联消费金融有限公司 | 数据更新方法、装置、计算机设备和存储介质 |
CN112233727A (zh) * | 2020-10-29 | 2021-01-15 | 北京诺禾致源科技股份有限公司 | 数据分区存储方法及装置 |
CN112233727B (zh) * | 2020-10-29 | 2024-01-26 | 北京诺禾致源科技股份有限公司 | 数据分区存储方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN104102701B (zh) | 2017-10-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104102701A (zh) | 一种基于hive的历史数据存档与查询方法 | |
US11068439B2 (en) | Unsupervised method for enriching RDF data sources from denormalized data | |
US10445170B1 (en) | Data lineage identification and change impact prediction in a distributed computing environment | |
US10572494B2 (en) | Bootstrapping the data lake and glossaries with ‘dataset joins’ metadata from existing application patterns | |
CN108256063B (zh) | 一种面向网络安全的知识库构建方法 | |
CN105354314B (zh) | 数据迁移方法及装置 | |
CN108090351B (zh) | 用于处理请求消息的方法和装置 | |
US20140280070A1 (en) | System and method for providing technology assisted data review with optimizing features | |
US9418241B2 (en) | Unified platform for big data processing | |
US10331947B2 (en) | Automatic detection on string and column delimiters in tabular data files | |
US9922033B1 (en) | Systems and methods for efficiently extracting contents of container files | |
US11601453B2 (en) | Methods and systems for establishing semantic equivalence in access sequences using sentence embeddings | |
CN103778133A (zh) | 一种数据库对象的变更方法及装置 | |
CN106982150A (zh) | 一种基于Hadoop的移动互联网用户行为分析方法 | |
CN110263104B (zh) | Json字符串处理方法及装置 | |
US11182681B2 (en) | Generating natural language answers automatically | |
CN103324713A (zh) | 多级服务器中的数据处理方法、装置和数据处理系统 | |
CN109413131A (zh) | 一种日志解析的方法及装置 | |
CN110019542B (zh) | 企业关系的生成、生成组织成员数据库及识别同名成员 | |
CN109902070B (zh) | 一种面向WiFi日志数据的解析存储搜索方法 | |
CN105159820A (zh) | 一种系统日志数据传输方法及装置 | |
WO2016093839A1 (en) | Structuring of semi-structured log messages | |
CN104424399A (zh) | 一种基于病毒蛋白质本体的知识导航的方法、装置和系统 | |
CN113434123A (zh) | 一种业务处理方法、装置及电子设备 | |
US11601339B2 (en) | Methods and systems for creating multi-dimensional baselines from network conversations using sequence prediction models |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |