hive2 java连接_用Java代码通过JDBC连接Hiveserver2
1.在終端啟動(dòng)hiveserver2
#hiveserver2
2.使用beeline連接hive
另外打開一個(gè)終端,輸入如下命令(xavierdb必須是已經(jīng)存在的數(shù)據(jù)庫(kù))
#beeline -u jdbc:hive2://localhost:10000/xavierdb -n hive -p hive
3.添加maven依賴
org.apache.hive
hive-jdbc
1.1.0
junit
junit
4.9
org.apache.hadoop
hadoop-common
2.6.0
org.apache.hadoop
hadoop-client
2.6.0
org.apache.hive
hive-metastore
1.1.0
org.apache.hive
hive-exec
1.1.0
maven依賴
出現(xiàn)過的錯(cuò)誤: Error: Could not open client transport with JDBC Uri: jdbc:hive2://localhost:10000/default
解決辦法:檢查發(fā)現(xiàn)運(yùn)行beeline時(shí)Driver版本Driver: Hive JDBC (version 1.1.0-cdh5.16.1)比maven依賴中的Driver版本低,將maven版本調(diào)至1.1.0問題解決
Java API測(cè)試:
注意:這里的url必須是beeline值中使用的url
package TestOption;
import org.junit.Test;
import org.junit.After;
import org.junit.Before;
import java.sql.*;
/**
* @Author:Xavier
* @Data:2019-02-18 11:43
**/
public class HiveOption {
private static String driverName = "org.apache.hive.jdbc.HiveDriver";
private static String url = "jdbc:hive2://172.19.224.213:10000/xavierdb";
private static Connection con = null;
private static Statement state = null;
private static ResultSet res = null;
//加載驅(qū)動(dòng),創(chuàng)建連接
@Before
public void init() throws ClassNotFoundException, SQLException {
Class.forName(driverName);
con = DriverManager.getConnection(url, "hive", "hive");
state = con.createStatement();
}
//創(chuàng)建數(shù)據(jù)庫(kù)
@Test
public void CreateDb() throws SQLException {
state.execute("create database xavierdb1");
}
// 查詢所有數(shù)據(jù)庫(kù)
@Test
public void selectDb() throws SQLException {
res = state.executeQuery("show databases");
while (res.next()) {
System.out.println(res.getString(1));
}
}
// 刪除數(shù)據(jù)庫(kù)
@Test
public void dropDb() throws SQLException {
state.execute("drop database if exists xavierdb1");
}
// 創(chuàng)建表
@Test
public void createTab() throws SQLException {
state.execute("create table if not exists student ( " +
"name string , " +
"age int , " +
"agent string ," +
"adress struct) " +
"row format delimited " +
"fields terminated by ',' " +//字段與字段之間的分隔符
"collection items terminated by ':'"+//一個(gè)字段各個(gè)item的分隔符
"lines terminated by '\n' ");//行分隔符
}
// 查詢所有表
@Test
public void selectTab() throws SQLException {
res=state.executeQuery("show tables");
while(res.next()){
System.out.println(res.getString(1));
}
}
// 查看表結(jié)構(gòu)
@Test
public void descTab() throws SQLException {
res=state.executeQuery("desc student");
while(res.next()){
System.out.println(res.getString(1)+"\t"+res.getString(2));
}
}
// 加載數(shù)據(jù)(本地加載)
@Test
public void loadData() throws SQLException {
String infile=" '/root/studentData' ";
state.execute("load data local inpath "+infile+"overwrite into table student");
}
// 查詢數(shù)據(jù)
@Test
public void selectTab() throws SQLException {
res=state.executeQuery("select * from student");
while(res.next()){
System.out.println(
res.getString(1)+"-"+
res.getString(2)+"-"+
res.getString(3)+"-"+
res.getString(4));
}
}
// 統(tǒng)計(jì)查詢(會(huì)運(yùn)行mapreduce作業(yè),資源開銷較大)
@Test
public void countData() throws SQLException {
res=state.executeQuery("select count(1) from student");
while(res.next()){
System.out.println(res.getInt(1));
}
}
// 刪除表
@Test
public void dropTab() throws SQLException {
state.execute("drop table student1");
}
@After
public void destory() throws SQLException {
if (res != null) state.close();
if (state != null) state.close();
if (con != null) con.close();
}
}
標(biāo)簽:JDBC,Java,res,void,hive,throws,Hiveserver2,state,public
來源: https://www.cnblogs.com/xavier-xd/p/10399581.html
總結(jié)
以上是生活随笔為你收集整理的hive2 java连接_用Java代码通过JDBC连接Hiveserver2的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [转载] java左移右移和无符号右移
- 下一篇: [转载] Java中的变量和常量