首先虛擬機上已經安裝好hive。
下面是連接hive需要的操作。
一、配置。
1.查找虛擬機的ip
輸入 ifconfig
2.配置文件
(1)配置hadoop目錄下的core-site.xml和hdfs-site.xml
在core-site.xml中添加下面配置:
<property> <name>hadoop.proxyuser.hadoop.hosts</name> <value>*</value> </property> <property> <name>hadoop.proxyuser.hadoop.groups</name> <value>*</value> </property>
在hdfs-site.xml添加以下配置:
<property> <name>dfs.webhdfs.enabled</name> <value>true</value> </property>
(2)配置hive目錄中的conf文件夾下的hive-site.xml文件(這是hive-site.xml整個文件內容,請根據自己的配置進行修改)
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?> <configuration> <property> <name>javax.jdo.option.ConnectionURL</name> <value>jdbc:mysql://localhost:3306/hive?createDatabaseIfNotExist=true</value> <description>JDBC connect string for a JDBC metastore</description> </property> <property> <name>javax.jdo.option.ConnectionDriverName</name> <value>com.mysql.jdbc.Driver</value> <description>Driver class name for a JDBC metastore</description> </property> <property> <name>javax.jdo.option.ConnectionUserName</name> <value>hive</value> //連接 hive 的用戶名 <description>username to use against metastore database</description> </property> <property> <name>javax.jdo.option.ConnectionPassword</name> <value>hive</value> //連接 hive 的密碼 <description>password to use against metastore database</description> </property>
//以上部分是在安裝hive的時候就需要進行的配置,已經配置好的不用進行修改
//----------------------------------------------------分割線--------------------------------
<!-- 這是hiveserver2 --> <property> <name>hive.metastore.warehouse.dir</name> <value>/usr/hive/warehouse</value> //(hive所在集群的IP地址) <description>location of default database for the warehouse</description> </property> <property> <name>hive.server2.thrift.port</name> <value>10000</value> <description>Port number of HiveServer2 Thrift interface. Can be overridden by setting $HIVE_SERVER2_THRIFT_PORT</description> </property> <property> <name>hive.server2.thrift.bind.host</name> <value>192.168.43.66</value> //主機地址(修改為自己的主機ip) <description>Bind host on which to run the HiveServer2 Thrift interface. Can be overridden by setting $HIVE_SERVER2_THRIFT_BIND_HOST</description> </property> <property> <name>hive.server2.long.polling.timeout</name> <value>5000</value> <description>Time in milliseconds that HiveServer2 will wait, before responding to asynchronous calls that use long polling</description> </property> </configuration>
三、使用beeline/hiveserver2連接hive
1.啟動hadoop,用jps查看進程
2.輸入hiveserver2,等待一會兒,打開一個新的終端(出現一個新的進程RunJar)
3.在新的終端輸入beeline
4.進行連接( !connect jdbc:hive2://192.168.43.66:10000)(其中192.168.43.66為自己虛擬機的ip地址)
箭頭所指的兩個地方是在上述過程 一.2.(2) 中配置hive-site.xml提到的用戶名和密碼(修改為自己的用戶名以及密碼)
出現這樣界面,就是連接成功。
下面是使用eclipe進行連接測試。
首先需要向新建項目導入jar包
連接mysql的jar包(mysql-connector-java-5.1.44-bin.jar);hadoop中share/hadoop/common/lib下所有的jar包;hadoop中share/hadoop/common下hadoop-common-2.7.7.jar
以及hive中lib下所有的jar包
測試代碼:(因為我已經有了表data以及數據,就以查找為例)
package com.jdbc.hive.test; import java.sql.*; import java.sql.SQLException; public class JDBCHive { private static String driverName = "org.apache.hive.jdbc.HiveDriver"; 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); } Connection con = DriverManager.getConnection("jdbc:hive2://192.168.43.66:10000/hive", "hive", "hive");//后兩個參數是用戶名密碼 if(con==null) System.out.println("連接失敗"); else { Statement stmt = con.createStatement(); String sql = "select * from data "; //String sql = "select id,count(*) total from data group by id order by total desc limit 10"; System.out.println("Running: " + sql); ResultSet res = stmt.executeQuery(sql); while (res.next()) { //System.out.print(res.getString(1)+" "); //System.out.println(res.getString("total")); System.out.println(res.getString(1)); //輸出第一列的數據 } } } }
結果展示如下