Hadoop是个很流行的分布式计算解决方案,Hive是基于hadoop的数据分析工具。一般来说我们对Hive的操作都是通过cli来进行,也就是Linux的控制台,但是,这样做本质上是每个连接都存放一个元数据,各个之间都不相同,这样的模式用来做一些测试比较合适,并不适合做产品的开发和应用。
因此,就产生了Hive的JDBC连接的方式。本文介绍报表开发工具FineReport中,hadoop、hive数据库连接方法。
Hive提供了jdbc驱动,使得我们可以连接Hive并进行一些类关系型数据库的sql语句查询等操作,首先我们需要将这些驱动拷贝到报表工程下面,然后再建立连接,最后通过连接进行数据查询。
将hadoop里的hadoop-common.jar拷贝至报表工程appname/WEB-INF/lib下;
将hive里的hive-exec.jar、hive-jdbc.jar、hive-metastore.jar、hive-service.jar、libfb303.jar、log4j.jar、slf4j-api.jar、slf4j-log4j12.jar拷贝至报表工程appname/WEB-INF/lib下。
启动设计器,打开服务器>定义数据连接,新建JDBC连接。
在Hive 0.11.0版本之前,只有HiveServer服务可用,在程序操作Hive之前,必须在Hive安装的服务器上打开HiveServer服务。而HiveServer本身存在很多问题(比如:安全性、并发性等);针对这些问题,Hive0.11.0版本提供了一个全新的服务:HiveServer2,这个很好的解决HiveServer存在的安全性、并发性等问题,所以下面我们分别介绍HiveServer和HiveServer2配置数据连接的方式。
· HiveServer
数据库驱动:org.apache.hadoop.hive.jdbc.HiveDriver
URL:jdbc:hive://localhost:10000/default
注:hive服务默认端口为10000,根据实际情况修改端口;另外目前只支持默认数据库名default,所有的Hive都支持。
测试连接,提示连接成功即可。
· HiveServer2
数据库驱动:org.apache.hive.jdbc.HiveDriver
URL:jdbc:hive2://localhost:10000/default
注:该连接方式只支持Hive0.11.0及之后版本。