eclipse 访问 hive1.2.1
参考链接1.http://www.iteblog.com/archives/846
操作实际参考代码:http://sunhs.sinaapp.com/?p=343
配置eclipse 搞1天, 不管怎样导入包一直提示DriverManager not found exception:
注意1:要导入的包hive1.2.1里面的一个$HIVE_HOME/lib/slf4j-api-1.6.1.jar 应该没有,要到hadoop/share/hadoop/common/lib 下面导入以下2个代替,
/usr/local/hadoop/share/hadoop/common/lib/slf4j-log4j12-1.7.5.jar
/usr/local/hadoop/share/hadoop/common/lib/slf4j-api-1.7.5.jar
注意2:虽然hive创建在mysql 的元数据库是hive,但是我们这里写的数据库只能写default,不能写hive,不然怎么调整mysql 都会提示数据库不存在,
但是改成default 之后,在mysql 中hive 数据库下面的TBLS表里可以查询到下面代码运行所创建的testhivedrivertable表.
附: 在eclipse 运行代码的过程中,在hive --service hiveserver2 terminal 终端可以看到程序如map 进程.
原因如下:
上面是用Java连 接HiveServer,而HiveServer本身存在很多问题(比如:安全性、并发性等);针对这些问题,Hive0.11.0版本提供了一个全新的 服务:HiveServer2,这个很好的解决HiveServer存在的安全性、并发性等问题。这个服务启动程序在${HIVE_HOME}/bin /hiveserver2里面,你可以通过下面的方式来启动HiveServer2服务:
$HIVE_HOME/bin/hiveserver2
也可以通过下面的方式启动HiveServer2
$HIVE_HOME/bin/hive --service hiveserver2
两种方式效果都一样的。但是以前的程序需要修改两个地方,如下所示:
private static String driverName = "org.apache.hadoop.hive.jdbc.HiveDriver";
改为
private static String driverName = "org.apache.hive.jdbc.HiveDriver"; Connection con = DriverManager.getConnection(
"jdbc:hive://localhost:10002/default", "wyp", "");
改为
Connection con = DriverManager.getConnection(
"jdbc:hive2://localhost:10002/default", "wyp", "");
这里顺便说说本程序所依赖的jar包,一共有以下几个(版本不同,但是匹配类似就行):
hadoop-2.2./share/hadoop/common/hadoop-common-2.2..jar
$HIVE_HOME/lib/hive-exec-0.11..jar
$HIVE_HOME/lib/hive-jdbc-0.11..jar
$HIVE_HOME/lib/hive-metastore-0.11..jar
$HIVE_HOME/lib/hive-service-0.11..jar
$HIVE_HOME/lib/libfb303-0.9..jar
$HIVE_HOME/lib/commons-logging-1.0..jar
$HIVE_HOME/lib/slf4j-api-1.6..jar
代码
package getConnect; import java.sql.SQLException;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;
import java.sql.DriverManager; public class HiveJdbcClient {
private static String driverName = "org.apache.hive.jdbc.HiveDriver"; /**
* @param args
* @throws SQLException
*/
public static void main(String[] args) throws SQLException {
try {
Class.forName(driverName);
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
System.exit(1);
}
//replace "hive" here with the name of the user the queries should run as
Connection con = DriverManager.getConnection("jdbc:hive2://192.168.2.35:10000/default", "hadoop", "1234");
Statement stmt = con.createStatement();
String tableName = "testHiveDriverTable";
stmt.execute("drop table if exists " + tableName);
stmt.execute("create table " + tableName + " (key int, value string)");
// show tables
String sql = "show tables '" + tableName + "'";
System.out.println("Running: " + sql);
ResultSet res = stmt.executeQuery(sql);
if (res.next()) {
System.out.println(res.getString(1));
}
// describe table
sql = "describe " + tableName;
System.out.println("Running: " + sql);
res = stmt.executeQuery(sql);
while (res.next()) {
System.out.println(res.getString(1) + "\t" + res.getString(2));
} // load data into table
// NOTE: filepath has to be local to the hive server
// NOTE: /tmp/a.txt is a ctrl-A separated file with two fields per line
String filepath = "/usr/local/hive/examples/files/kv1.txt";
sql = "load data local inpath '" + filepath + "' into table " + tableName;
System.out.println("Running: " + sql);
stmt.execute(sql); // select * query
sql = "select * from " + tableName;
System.out.println("Running: " + sql);
res = stmt.executeQuery(sql);
while (res.next()) {
System.out.println(String.valueOf(res.getInt(1)) + "\t" + res.getString(2));
} // regular hive query
sql = "select count(1) from " + tableName;
System.out.println("Running: " + sql);
res = stmt.executeQuery(sql);
while (res.next()) {
System.out.println(res.getString(1));
}}}
eclipse 访问 hive1.2.1的更多相关文章
- java eclipse 访问 Oracle数据库的代码
package com.hanqi.test; import java.sql.Connection; import java.sql.DriverManager; import java.sql.R ...
- 如何在Windows中使用Eclipse访问虚拟机Linux系统中的hadoop(伪分布式)
因为计算机配置过低,在虚拟机里几乎无法使用Eclipse,效率极低! 所以现在尝试使用Windows下Eclipse操作虚拟机中Hadoop,步骤如下: 开发环境:Hadoop2.7.1,Ubuntu ...
- eclipse 访问GitHub 问题
- Eclipse访问外部网站(比如:CSDN首页)
其实这个感觉没什么用,毕竟我们都有浏览器,而且浏览器界面还比较宽,方便.只是好奇.所以记录一下.效果如下: 有两种方法,方法一是永久的,方法二是一次性的. 方法一(永久): 1.在工具栏找" ...
- 【CentOS】Eclipse插件egit使用
1.简介 2.安装 3.配置 4.使用 5.补充说明 参考资料: http://yufenfei.iteye.com/blog/1750124 1.简介 EGit就是一款Eclips ...
- 在DDMS中访问data目录
转自 http://blog.csdn.net/catoop/article/details/7584746 由于某些原因,需要通过eclipse访问/data/下的文件. 打开eclipse-DDM ...
- web应用启动后发现被自动访问
为了找到原因,做了以下操作,发现是eclipse访问的,但是具体原因未知
- 安装及使用Eclipse Maven插件的经验
Eclipse Maven插件的站点目前已经迁移到了Eclipse主站上:http://eclipse.org/m2e/ 其安装方法也非常简单,通过Eclipse访问下面的URL:http://dow ...
- hadoop开发环境部署——通过eclipse远程连接hadoop2.7.3进行开发
一.前言 环境: 系统:centos6.5 hadoop版本:Apache hadoop2.7.3(Windows和centos都是同一个) eclipse版本:4.2.0(juno版本,window ...
随机推荐
- django源码解析之BigIntegerField (一)
要分析django的源码,来更深入的学习django,是一个不错的方法,可惜需要大量的时间. 所以,能分析多少就是多少吧. 本次源码分析以1.4.16为基础. 用sublime 打开下载的源码,使用 ...
- jstl报错:Property 'name' not found on type java.lang.String
<c:forEach items='${navigationMenus}' var="navigationMenu" > ...
- 电子印章在Odoo的实现步骤
1. 首先用PS制作一个电子印章,具体步骤可参考 http://www.jb51.net/photoshop/173568.html 2. 给Odoo中的pdf添加印章的原理,就是利用Odoo的QWe ...
- FutureTask 源码分析
FutureTask 源码分析,这个类的原理与我分析android当中的FutureTask类差不多[http://www.cnblogs.com/daxin/p/3802392.html] publ ...
- redis详细配置文件
redis 单机版自己指定配置 #修改为守护模式 daemonize yes #设置进程锁文件 pidfile /usr/local/redis/redis.pid #端口 port 6379 #客户 ...
- 1.nginx 防注入
http://blog.kukafei520.net/html/2013/773.html
- Hbase 学习(二)补充 自定义filter
本来这个内容是不单独讲的,但是因为上一个页面太大,导致Live Writer死机了,不能继续编辑了,所以就放弃了 这里要讲的是自定义filter,从FilterBase继承 public class ...
- PCL点云分割(2)
关于点云的分割算是我想做的机械臂抓取中十分重要的俄一部分,所以首先学习如果使用点云库处理我用kinect获取的点云的数据,本例程也是我自己慢慢修改程序并结合官方API 的解说实现的,其中有很多细节如果 ...
- js实现选集功能
项目中有个播放列表选集的需求,如下图: 现在展示的1-42集全部,我们如何实现这个选集的功能呢? 我的思路如下: 1.将这42集按每10集划分,并存入数组: 2.保存开始和结束位置,比如说1~10,开 ...
- Change Data template dynamically
1. Attached Property bound to task state. Any change will dynamically set data template.2. Visual St ...