设为首页 收藏本站
查看: 1411|回复: 0

[经验分享] Hadoop Hive概念学习系列之hive里的JDBC编程入门(二十二)

[复制链接]

尚未签到

发表于 2017-12-18 11:13:48 | 显示全部楼层 |阅读模式
  HiveJDBC示例
  在使用 JDBC 开发 Hive 程序时, 必须首先开启 Hive 的远程服务接口。在hive安装目录下的bin,使用下面命令进行开启:
  

    hive -service hiveserver &  //Hive低版本提供的服务是:Hiveserver  

    hive --service hiveserver2 &       //Hive0.11.0以上版本提供了的服务是:Hiveserver2  

  我这里使用的Hive1.0版本,故我们使用Hiveserver2服务,下面我使用 Java 代码通过JDBC连接Hiveserver。
DSC0000.png

  18.1  测试数据
  本地目录/home/hadoop/下的djt.txt文件内容(每行数据之间用tab键隔开)如下所示:
  

  1        dajiangtai  

  2        hadoop  

  3        Hive  

  4        hbase  

  5        spark  

  18.2  程序代码
  

  import java.sql.Connection;  

  import java.sql.DriverManager;  

  import java.sql.ResultSet;  

  import java.sql.SQLException;  

  import java.sql.Statement;  

  public>  

           private static String driverName = "org.apache.Hive.jdbc.HiveDriver";//Hive驱动名称  

           private static String url = "jdbc:Hive2://djt11:10000/default";//连接Hive2服务的连接地址,Hive0.11.0以上版本提供了一个全新的服务:HiveServer2  

           private static String user = "hadoop";//对HDFS有操作权限的用户  

           private static String password = "";//在非安全模式下,指定一个用户运行查询,忽略密码  

           private static String sql = "";  

           private static ResultSet res;  

           public static void main(String[] args) {  

               try {  

                  >  

                   Connection conn = DriverManager.getConnection(url, user, password);//根据URL连接指定的数据库  

                   Statement stmt = conn.createStatement();  

                   

                   //创建的表名  

                   String tableName = "testHiveDriverTable";  

                   

                   /** 第一步:表存在就先删除 **/  

                   sql = "drop table " + tableName;  

                   stmt.execute(sql);  

                   

                   /** 第二步:表不存在就创建 **/  

                   sql = "create table " + tableName + " (key int, value string)  row format delimited fields terminated by '\t' STORED AS TEXTFILE";  

                   stmt.execute(sql);  

                   

                   // 执行“show tables”操作  

                   sql = "show tables '" + tableName + "'";  

                   res = stmt.executeQuery(sql);  

                   if (res.next()) {  

                       System.out.println(res.getString(1));  

                   }  

                   

                   // 执行“describe table”操作  

                   sql = "describe " + tableName;  

                   res = stmt.executeQuery(sql);  

                   while (res.next()) {    

                       System.out.println(res.getString(1) + "\t" + res.getString(2));  

                   }  

                   

                   // 执行“load data into table”操作  

                   String filepath = "/home/hadoop/djt.txt";//Hive服务所在节点的本地文件路径  

                   sql = "load data local inpath '" + filepath + "' into table " + tableName;  

                   stmt.execute(sql);  

                   

                   // 执行“select * query”操作  

                   sql = "select * from " + tableName;  

                   res = stmt.executeQuery(sql);  

                   while (res.next()) {  

                       System.out.println(res.getInt(1) + "\t" + res.getString(2));  

                   }  

                   

                   // 执行“regular Hive query”操作,此查询会转换为MapReduce程序来处理  

                   sql = "select count(*) from " + tableName;  

                   res = stmt.executeQuery(sql);  

                   while (res.next()) {  

                       System.out.println(res.getString(1));  

                   }          

                   conn.close();  

                   conn = null;  

               } catch (ClassNotFoundException e) {  

                   e.printStackTrace();  

                   System.exit(1);  

               } catch (SQLException e) {  

                   e.printStackTrace();  

                   System.exit(1);  

               }  

           }  

  }  

  18.3  运行结果(右击-->Run as-->Run on Hadoop)
  执行“show tables”运行结果:
  

        testHivedrivertable  

  执行“describe table”运行结果:
  

      key    int  

      value    string  

  执行“select * query”运行结果:
  

      1        dajiangtai  

      2        hadoop  

      3        Hive  

      4        hbase  

      5        spark  

  执行“regular Hive query”运行结果:
  

      5  
DSC0001.png
DSC0002.png


DSC0003.png   

  

DSC0004.png


hive jdbc使用

Hive项目开发环境搭建(Eclipse\MyEclipse + Maven)

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-425334-1-1.html 上篇帖子: 程序员必须要知道的Hadoop的一些事实 下篇帖子: maven工程之pom模板(hadoop、hive、hbase)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表