参考链接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服务:

  1. $HIVE_HOME/bin/hiveserver2

也可以通过下面的方式启动HiveServer2

  1. $HIVE_HOME/bin/hive --service hiveserver2

两种方式效果都一样的。但是以前的程序需要修改两个地方,如下所示:

  1. private static String driverName = "org.apache.hadoop.hive.jdbc.HiveDriver";
  2. 改为
  3. private static String driverName = "org.apache.hive.jdbc.HiveDriver";
  4.  
  5. Connection con = DriverManager.getConnection(
  6. "jdbc:hive://localhost:10002/default", "wyp", "");
  7. 改为
  8. Connection con = DriverManager.getConnection(
  9. "jdbc:hive2://localhost:10002/default", "wyp", "");

这里顺便说说本程序所依赖的jar包,一共有以下几个(版本不同,但是匹配类似就行):

  1. hadoop-2.2./share/hadoop/common/hadoop-common-2.2..jar
  2. $HIVE_HOME/lib/hive-exec-0.11..jar
  3. $HIVE_HOME/lib/hive-jdbc-0.11..jar
  4. $HIVE_HOME/lib/hive-metastore-0.11..jar
  5. $HIVE_HOME/lib/hive-service-0.11..jar
  6. $HIVE_HOME/lib/libfb303-0.9..jar
  7. $HIVE_HOME/lib/commons-logging-1.0..jar
  8. $HIVE_HOME/lib/slf4j-api-1.6..jar

代码

  1. package getConnect;
  2.  
  3. import java.sql.SQLException;
  4. import java.sql.Connection;
  5. import java.sql.ResultSet;
  6. import java.sql.Statement;
  7. import java.sql.DriverManager;
  8.  
  9. public class HiveJdbcClient {
  10. private static String driverName = "org.apache.hive.jdbc.HiveDriver";
  11.  
  12. /**
  13. * @param args
  14. * @throws SQLException
  15. */
  16. public static void main(String[] args) throws SQLException {
  17. try {
  18. Class.forName(driverName);
  19. } catch (ClassNotFoundException e) {
  20. // TODO Auto-generated catch block
  21. e.printStackTrace();
  22. System.exit(1);
  23. }
  24. //replace "hive" here with the name of the user the queries should run as
  25. Connection con = DriverManager.getConnection("jdbc:hive2://192.168.2.35:10000/default", "hadoop", "1234");
  26. Statement stmt = con.createStatement();
  27. String tableName = "testHiveDriverTable";
  28. stmt.execute("drop table if exists " + tableName);
  29. stmt.execute("create table " + tableName + " (key int, value string)");
  30. // show tables
  31. String sql = "show tables '" + tableName + "'";
  32. System.out.println("Running: " + sql);
  33. ResultSet res = stmt.executeQuery(sql);
  34. if (res.next()) {
  35. System.out.println(res.getString(1));
  36. }
  37. // describe table
  38. sql = "describe " + tableName;
  39. System.out.println("Running: " + sql);
  40. res = stmt.executeQuery(sql);
  41. while (res.next()) {
  42. System.out.println(res.getString(1) + "\t" + res.getString(2));
  43. }
  44.  
  45. // load data into table
  46. // NOTE: filepath has to be local to the hive server
  47. // NOTE: /tmp/a.txt is a ctrl-A separated file with two fields per line
  48. String filepath = "/usr/local/hive/examples/files/kv1.txt";
  49. sql = "load data local inpath '" + filepath + "' into table " + tableName;
  50. System.out.println("Running: " + sql);
  51. stmt.execute(sql);
  52.  
  53. // select * query
  54. sql = "select * from " + tableName;
  55. System.out.println("Running: " + sql);
  56. res = stmt.executeQuery(sql);
  57. while (res.next()) {
  58. System.out.println(String.valueOf(res.getInt(1)) + "\t" + res.getString(2));
  59. }
  60.  
  61. // regular hive query
  62. sql = "select count(1) from " + tableName;
  63. System.out.println("Running: " + sql);
  64. res = stmt.executeQuery(sql);
  65. while (res.next()) {
  66. System.out.println(res.getString(1));
  67. }}}

eclipse 访问 hive1.2.1的更多相关文章

  1. java eclipse 访问 Oracle数据库的代码

    package com.hanqi.test; import java.sql.Connection; import java.sql.DriverManager; import java.sql.R ...

  2. 如何在Windows中使用Eclipse访问虚拟机Linux系统中的hadoop(伪分布式)

    因为计算机配置过低,在虚拟机里几乎无法使用Eclipse,效率极低! 所以现在尝试使用Windows下Eclipse操作虚拟机中Hadoop,步骤如下: 开发环境:Hadoop2.7.1,Ubuntu ...

  3. eclipse 访问GitHub 问题

  4. Eclipse访问外部网站(比如:CSDN首页)

    其实这个感觉没什么用,毕竟我们都有浏览器,而且浏览器界面还比较宽,方便.只是好奇.所以记录一下.效果如下: 有两种方法,方法一是永久的,方法二是一次性的. 方法一(永久): 1.在工具栏找" ...

  5. 【CentOS】Eclipse插件egit使用

    1.简介 2.安装 3.配置 4.使用 5.补充说明   参考资料: http://yufenfei.iteye.com/blog/1750124    1.简介     EGit就是一款Eclips ...

  6. 在DDMS中访问data目录

    转自 http://blog.csdn.net/catoop/article/details/7584746 由于某些原因,需要通过eclipse访问/data/下的文件. 打开eclipse-DDM ...

  7. web应用启动后发现被自动访问

    为了找到原因,做了以下操作,发现是eclipse访问的,但是具体原因未知

  8. 安装及使用Eclipse Maven插件的经验

    Eclipse Maven插件的站点目前已经迁移到了Eclipse主站上:http://eclipse.org/m2e/ 其安装方法也非常简单,通过Eclipse访问下面的URL:http://dow ...

  9. hadoop开发环境部署——通过eclipse远程连接hadoop2.7.3进行开发

    一.前言 环境: 系统:centos6.5 hadoop版本:Apache hadoop2.7.3(Windows和centos都是同一个) eclipse版本:4.2.0(juno版本,window ...

随机推荐

  1. 通过python-libvirt管理KVM虚拟机 代码实现

    初步代码 <span style="font-size:18px;">''''' Work with virtual machines managed by libvi ...

  2. linux下Anaconda安装使用Tensorflow

    # linux下Anaconda安装使用Tensorflow ### 环境------------------------------ Ubuntu 18.04 ### 环境准备----------- ...

  3. eclipse中git更新操作

    1,本地已经修改的代码不要commit和push 2,选中工程,右击Team,然后点击Fetch from Upstream,从远程服务器拉取最新的代码 3,上一步操作完成,再右击工程,选中Team, ...

  4. python read file(f,csv)

    import csv def readfile0(): print('test read file') in_file = open('C:\python\demo\LiaoXueFeng\data\ ...

  5. IDEA无法启动debugger,报错Address localhost:1099 is already in use

    Address localhost:1099 is already in use http://blog.csdn.net/huazhongkejidaxuezpp/article/details/4 ...

  6. Spring高级装配(二) 条件化的bean

    如果你希望一个bean在特定的条件下才会出现: 应用的类路径下包含特定的库时才创建 只有当某个特定的bean也声明之后才会创建 某个特定的环境变量设定之后才创建某个bean 在Spring 4之前,很 ...

  7. slf4j+log4j2 pom配置

    <!-- log start --> <dependency> <groupId>org.slf4j</groupId> <artifactId& ...

  8. SD卡镜像烧写--树莓派为例

    SD烧写镜像都要先擦除SD卡内容,然后用image烧写工具烧写镜像. SD卡标准官网:www.sdcard.org,提供标准的擦除工具sdformatter. windows下镜像烧写工具可选用Win ...

  9. 数据库ACID属性

    A:Atomicity,原子性.即是事务要么全部完成,要么不完成. C:Consistency,一致性.即是事务如果是并发的,系统也必须如同串行一样. I:Isolation,隔离性.即是使得每个事务 ...

  10. awk和sed (十二)

    [教程主题]:4.awk和sed [主要内容] [1]awk AWK是贝尔实验室1977年搞出来的文本出现神器.之所以叫AWK是因为其取了三位创始人 Alfred Aho,Peter Weinberg ...