• eclipse 远程操作HIVE


    首先启动HiveServer

    hive --service hiveserver 10000 &  

    创建工程

    引入包:


    代码(简单的查询):

    package com.hive.jdbc;
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.ResultSet;
    import java.sql.Statement;
    
    public class HiveJDBC {
    
    	public static void main(String[] args) {
            try {
                Class.forName("org.apache.hadoop.hive.jdbc.HiveDriver");
                // 查询语句
                String querySQL = "SELECT * FROM t_rp";
                // 链接hive
                Connection con = DriverManager.getConnection("jdbc:hive://192.168.0.100:10000/default", "hive", "hive");
                Statement stmt = con.createStatement();
                // 执行查询语句
                ResultSet res = stmt.executeQuery(querySQL);
                while (res.next()) {
                    System.out.println("Result: key:" + res.getString(1) + "  –>  value:" + res.getString(2));
                }
                stmt.close();
                con.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    
    
    }
    

    上面是用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

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

    privatestatic String driverName = "org.apache.hadoop.hive.jdbc.HiveDriver";
    改为
    privatestatic 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.0/share/hadoop/common/hadoop-common-2.2.0.jar
    $HIVE_HOME/lib/hive-exec-0.11.0.jar
    $HIVE_HOME/lib/hive-jdbc-0.11.0.jar
    $HIVE_HOME/lib/hive-metastore-0.11.0.jar 
    $HIVE_HOME/lib/hive-service-0.11.0.jar  
    $HIVE_HOME/lib/libfb303-0.9.0.jar  
    $HIVE_HOME/lib/commons-logging-1.0.4.jar 
    $HIVE_HOME/lib/slf4j-api-1.6.1.jar
    如果你是用Maven,加入以下依赖

    <dependency>
            <groupId>org.apache.hive</groupId>
            <artifactId>hive-jdbc</artifactId>
            <version>0.11.0</version>
    </dependency>
     <dependency>
            <groupId>org.apache.hadoop</groupId>
            <artifactId>hadoop-common</artifactId>
            <version>2.2.0</version>
    </dependency>

    hive-site.xml 文件中设置以下配置:

    <property>  
      <name>hive.server2.thrift.port</name>  
      <value>10000</value>  
    </property>  
    <property>  
      <name>hive.server2.thrift.bind.host</name>  
      <value>c1</value>  
    </property>
    异常问题:
     FAILED: RuntimeException org.apache.hadoop.security.AccessControlException: Permission denied: user=hive, access=EXECUTE, inode="/tmp":root:supergroup:drwx------
    解决:
    改为root用户就行了。

    版权声明:本文为博主原创文章,未经博主允许不得转载。

  • 相关阅读:
    sigpending
    js 动态计算折扣后总价格
    让ie6支持fixed最简单和实用的方法
    jquery提示气泡
    在线API,桌面版,jquery,css,Android中文开发文档,JScript,SQL掌用实例
    三元组表
    B-树
    二叉排序树
    顺序查找
    二分查找
  • 原文地址:https://www.cnblogs.com/jamesf/p/4751559.html
Copyright © 2020-2023  润新知