一种通过JDBC连接Hiveserver的快捷方法与流程

文档序号:12177393阅读:2080来源:国知局
本发明涉及计算机软件应用
技术领域
:,具体涉及一种通过JDBC连接Hiveserver的快捷方法,实现对进入大数据集群二次开发方便调试的处理。
背景技术
::Hive作为Hadoop社区的顶级项目,在实际项目环境中有很广泛的应用,hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供完整的sql查询功能,可以将sql语句转换为MapReduce任务进行运行。其优点是学习成本低,可以通过类SQL语句快速实现简单的MapReduce统计,不必开发专门的MapReduce应用,十分适合数据仓库的统计分析。Hive是建立在Hadoop上的数据仓库基础构架。它提供了一系列的工具,可以用来进行数据提取转化加载(ETL),这是一种可以存储、查询和分析存储在Hadoop中的大规模数据的机制。Hive定义了简单的类SQL查询语言,称为HQL,它允许熟悉SQL的用户查询数据。同时,这个语言也允许熟悉MapReduce开发者的开发自定义的mapper和reducer来处理内建的mapper和reducer无法完成的复杂的分析工作。HiveServer或者HiveServer2都是基于Thrift的,但HiveSever有时被称为Thriftserver,而HiveServer2却不会。既然已经存在HiveServer为什么还需要HiveServer2呢?这是因为HiveServer不能处理多于一个客户端的并发请求,这是由于HiveServer使用的Thrift接口所导致的限制,不能通过修改HiveServer的代码修正。因此在Hive-0.11.0版本中重写了HiveServer代码得到了HiveServer2,进而解决了该问题。HiveServer2支持多客户端的并发和认证,为开放API客户端如JDBC、ODBC提供了更好的支持,即HiveServer2提供了更强大的功能。传统数据仓库统计的灵活性,并且传统的数据仓库建设理论非常的成熟,建起来也是相对的简单容易,但存在数据量过大时导致数据提取缓慢的问题。技术实现要素:本发明要解决的技术问题是:本发明针对以上问题,提供一种通过JDBC连接Hiveserver的快捷方法。本发明所采用的技术方案为:一种通过JDBC连接Hiveserver的快捷方法,所述方法通过在程序操作Hive之前,在Hive安装的服务器上打开HiveServer服务,服务开启之后,通过Hive提供的jdbc驱动,使用Java代码来连接Hiveserver并进行一些类关系型数据库或同关系型数据库的sql语句查询操作。JDBC(JavaDataBaseConnectivity,java数据库连接)是一种用于执行SQL语句的JavaAPI,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。所述Hiveserver为Hive0.11.0版本提供的HiveServer2。HiveServer本身存在很多问题(比如:安全性、并发性等);HiveServer2很好的解决HiveServer存在的安全性、并发性等问题,支持多客户端的并发和认证,为开放API客户端如JDBC、ODBC提供了更好的支持,即HiveServer2提供了更强大的功能。所述HiveServer2服务的启动程序在${HIVE_HOME}/bin/hiveserver2里面,通过下面的方式来启动HiveServer2服务:$HIVE_HOME/bin/hiveserver2或$HIVE_HOME/bin/hive--servicehiveserver2。所述方法通过Hive提供的用户接口:CLI、Client或WebUI通信,其中:CLI(command-lineinterface,命令行界面)是指可在用户提示符下键入可执行指令的界面;Client是Hive的客户端,在启动Client模式的时候,需要指出HiveServer所在节点,并且在该节点启动HiveServer;WUI是通过浏览器访问Hive。本发明的有益效果为:本发明突破了传统数据仓库数据量过大导致的数据提取缓慢的问题,在数据量上不再有限制,方便开发者对自己的业务进行开发实践,在实际项目环境中有很广泛的应用。具体实施方式下面结合具体实施方式对本发明进一步说明:实施例1:一种通过JDBC连接Hiveserver的快捷方法,所述方法通过在程序操作Hive之前,在Hive安装的服务器上打开HiveServer服务,服务开启之后,通过Hive提供的jdbc驱动,使用Java代码来连接Hiveserver并进行一些类关系型数据库或同关系型数据库的sql语句查询操作。通过Java代码来连接hiveserver方法如下:importjava.sql.SQLException;importjava.sql.Connection;importjava.sql.ResultSet;importjava.sql.Statement;importjava.sql.DriverManager;publicclassHiveJdbcTest{privatestaticStringdriverName="org.apache.hadoop.hive.jdbc.HiveDriver";publicstaticvoidmain(String[]args)throwsSQLException{try{Class.forName(driverName);}catch(ClassNotFoundExceptione){e.printStackTrace();System.exit(1);}Connectioncon=DriverManager.getConnection("jdbc:hive://localhost:10002/default","wyp","");Statementstmt=con.createStatement();StringtableName="wyphao";stmt.execute("droptableifexists"+tableName);stmt.execute("createtable"+tableName+"(keyint,valuestring)");System.out.println("Createtablesuccess!");Stringsql="showtables'"+tableName+"'";System.out.println("Running:"+sql);ResultSetres=stmt.executeQuery(sql);if(res.next()){System.out.println(res.getString(1));}sql="select*from"+tableName;res=stmt.executeQuery(sql);while(res.next()){System.out.println(String.valueOf(res.getInt(1))+"\t"+res.getString(2));}实施例2在实施例1的基础上,本实施例所述Hiveserver为Hive0.11.0版本提供的HiveServer2。HiveServer本身存在很多问题(比如:安全性、并发性等);HiveServer2很好的解决HiveServer存在的安全性、并发性等问题,支持多客户端的并发和认证,为开放API客户端如JDBC、ODBC提供了更好的支持,即HiveServer2提供了更强大的功能。实施例3在实施例2的基础上,本实施例所述HiveServer2服务的启动程序在${HIVE_HOME}/bin/hiveserver2里面,通过下面的方式来启动HiveServer2服务:$HIVE_HOME/bin/hiveserver2或$HIVE_HOME/bin/hive--servicehiveserver2。实施例4在实施例1、2或3的基础上,本实施例所述方法通过Hive提供的用户接口:CLI、Client或WebUI通信,其中:CLI(command-lineinterface,命令行界面)是指可在用户提示符下键入可执行指令的界面;Client是Hive的客户端,在启动Client模式的时候,需要指出HiveServer所在节点,并且在该节点启动HiveServer;WUI是通过浏览器访问Hive。实施方式仅用于说明本发明,而并非对本发明的限制,有关
技术领域
:的普通技术人员,在不脱离本发明的精神和范围的情况下,还可以做出各种变化和变型,因此所有等同的技术方案也属于本发明的范畴,本发明的专利保护范围应由权利要求限定。当前第1页1 2 3 当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1