您的位置:首页 > 编程语言 > Java开发

Hadoop生态组件之Hive环境搭建--第十讲(hive实战-java连接hive)

2018-03-23 15:13 393 查看
1.确认虚拟机防火墙已经关闭
2.启动hive
    2.1 shell模式

            切换到bin下    ./hive启动

    2.2 hive JDBC服务
            ./hive --service hiveserver2 &

   2.3测试jdbc连接是否可用
            切换到bin下    ./beeline            然后输入  !connect jdbc:hive2://ip地址:10000 root root  后面两个是你创建的用户名和密码如果能连接上就表示 jdbc没有问题了            注: !connect jdbc:hive2://localhost:10000/hive root root  这里不要使用localhost,应该使用配置的ip
3.java操作package com.lanqiao;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

import org.apache.log4j.Logger;

/**
* Hive的JavaApi
*
* @author haowl
*
*/
public class HiveJdbcCli {

private static String driverName = "org.apache.hive.jdbc.HiveDriver";
private static String url = "jdbc:hive2://192.168.0.107:10000/hive";
private static String user = "root";
private static String password = "root";
private static String sql = "";
private static ResultSet res;
private static final Logger log = Logger.getLogger(HiveJdbcCli.class);

public static void main(String[] args) {
Connection conn = null;
Statement stmt = null;
try {
conn = getConn();
System.out.println(conn);

stmt = conn.createStatement();

// 第一步:存在就先删除
String tableName = dropTable(stmt);

// 第二步:不存在就创建
createTable(stmt, tableName);

// 第三步:查看创建的表
showTables(stmt, tableName);

// 执行describe table操作
describeTables(stmt, tableName);

// 执行load data into table操作
loadData(stmt, tableName);

// 执行 select * query 操作
selectData(stmt, tableName);

// 执行 regular hive query 统计操作
countData(stmt, tableName);

} catch (ClassNotFoundException e) {
e.printStackTrace();
log.error(driverName + " not found!", e);
System.exit(1);
} catch (SQLException e) {
e.printStackTrace();
log.error("Connection error!", e);
System.exit(1);
} finally {
try {
if (conn != null) {
conn.close();
conn = null;
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}

private static void countData(Statement stmt, String tableName)
throws SQLException {
sql = "select count(1) from " + tableName;
System.out.println("Running:" + sql);
res = stmt.executeQuery(sql);
System.out.println("执行“regular hive query”运行结果:");
while (res.next()) {
System.out.println("count ------>" + res.getString(1));
}
}

private static void selectData(Statement stmt, String tableName)
throws SQLException {
sql = "select * from " + tableName;
System.out.println("Running:" + sql);
res = stmt.executeQuery(sql);
System.out.println("执行 select * query 运行结果:");
while (res.next()) {
System.out.println(res.getInt(1) + "\t" + res.getString(2));
}
}

private static void loadData(Statement stmt, String tableName)
throws SQLException {
String filepath = "/root/training/data/data.txt";
sql = "load data local inpath '" + filepath + "' into table "
+ tableName;
System.out.println("Running:" + sql);
stmt.execute(sql);
}

private static void describeTables(Statement stmt, String tableName)
throws SQLException {
sql = "describe " + tableName;
System.out.println("Running:" + sql);
res = stmt.executeQuery(sql);
System.out.println("执行 describe table 运行结果:");
while (res.next()) {
System.out.println(res.getString(1) + "\t" + res.getString(2));
}
}

private static void showTables(Statement stmt, String tableName)
throws SQLException {
sql = "show tables '" + tableName + "'";
System.out.println("Running:" + sql);
res = stmt.executeQuery(sql);
System.out.println("执行 show tables 运行结果:");
if (res.next()) {
System.out.println(res.getString(1));
}
}

private static void createTable(Statement stmt, String tableName)
throws SQLException {
sql = "create table "
+ tableName
+ " (key int, value string) row format delimited fields terminated by '\t'";
stmt.execute(sql);
}

private static String dropTable(Statement stmt) throws SQLException {
// 创建的表名
String tableName = "testHive";
sql = "drop table " + tableName;
stmt.execute(sql);
return tableName;
}

private static Connection getConn() throws ClassNotFoundException,
SQLException {
Class.forName(driverName);
Connection conn = DriverManager.getConnection(url, user, password);
return conn;
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐