问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

hive 需要写java代码吗

发布网友 发布时间:2022-04-07 16:17

我来回答

1个回答

热心网友 时间:2022-04-07 17:46

如果你的项目是java项目的话,就需要使用hive提供的java api,如下代码:
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
*
* 启动hive的远程服务接口命令行执行:hive --service hiveserver >/dev/null 2>/dev/null &
*
* @author 吖大哥
*
*/
public class HiveJdbcCli {

private static String driverName = "org.apache.hadoop.hive.jdbc.HiveDriver";
private static String url = "jdbc:hive://hadoop3:10000/default";
private static String user = "hive";
private static String password = "mysql";
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();
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;
}
if (stmt != null) {
stmt.close();
stmt = 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 = "/home/hadoop01/data";
sql = "load data local inpath '" + filepath + "' into table "
+ tableName;
System.out.println("Running:" + sql);
res = stmt.executeQuery(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.executeQuery(sql);
}

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

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

}
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
上市就跌的股票为什么 为什么新股都会暴跌 为什么新股上市都跌 身上有烧伤的伤疤怎么去除 石榴皮发霉还能吃吗?新鲜石榴的保存方法有哪些? 5岁上瑞思和英孚哪个好 瑞思和英孚哪个好?上过课后来说说各自的优缺点 瑞思和英孚哪个好?上过课后来分享各自的优缺点 怎么当历史老师 中学历史老师需求状况 谁会看八字流年?必反馈! 1989年9月12日(公历)10点50分,此命五行火旺;日主天干为木;必须有火助,但忌土太多。 算命专家请进 有会批八字的吗? 快车下载到桌面以后网速为什么会变很慢呢?请各位帮忙 在推算八字中立命宫有哪几种起法,小限又有几种起法? 什么是八字命宫,命宫的驻宫神煞与守宫神煞有什么不同?它与流年神煞有何不同? 360云盘资源怎样快速下载到桌面? 怎么快速的下载图片存于桌面 win7桌面主题下载 最快速的下载? 跪求GeekDesk(精简桌面快速启动工具) V2.0 绿色免费版软件百度云资源 xp桌面主题下载最快的下载地址? 桌面图标快捷软件下载 电脑电源短接绿线跟黑线风扇转一下就停了? 台式电脑电源高手维修,短接绿黑线风扇转一下就停。 Dell台式机无法启动,可能为电源问题,请问是否可持续短接绿线? 台式机电源只接硬盘,绿线接地启动,硬盘和电源风扇都转一下停,还没完全停下来又转,如此往复正常吗? 电脑电源绿线是什么,灰线呢? 电脑电源的绿线和黑线短路不能启动是怎么回事? 台式电脑电源不接主板绿线和黑线连接风扇就转其原理是什么呢? 八字求测2011年运气,和流月注意事项!谢谢 请高手帮我看下八字 说得好的追加分谢谢 哪位高手帮我算算我儿八字03年12月初三晚上10.45分生 想在朋友圈卖袜子前期应该怎样铺垫让人觉得不突然呢 我摆地摊卖袜子 怎么和顾客交谈才能激起他的购买欲望 斗牛犬音箱中文说明书 卖袜子的喊麦该怎么喊? 斗牛犬蓝牙音箱怎么调节音量 aerobull音箱怎么使用 OPPOr15在保修范围内,屏幕人为损坏,无法正常显示,是否可以免费保修? 想搞个卖袜子的顺口溜,放在路边吆喝这样肯定会事半功倍的,可要怎么做... aerobull音箱可以调震音吗 斗牛犬音响没声音斗牛犬音响声音很小加到最大还是很小怎么办 音响CP便携 请问一下,我买的OPPO手机一年没到,今天一不小心手机屏幕摔坏了,手机保修卡可以保修吗? 活动礼品怎么送才显得有格调? bijela音响怎么连接蓝牙 斗牛士音箱好吗 oppoa57维修卡能保修外屏坏了不能? Oppo手机屏幕摔坏可以用保修卡去修吗?