启动了 hiveserver2 以后才能使用 程序连接 。目前的 使用的 是 server2 版本。和以前的版本驱动包名不同:
package hadoop; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; public class HiveJdbcTest { private static String driverName = "org.apache.hive.jdbc.HiveDriver"; private static String connctUrl = "jdbc:hive2://centos1:10000/default"; private static String userName = "root"; private static String password = ""; public static void main(String[] args) throws SQLException, ClassNotFoundException { Class.forName(driverName); Connection con = DriverManager.getConnection(connctUrl, userName, password); Statement stmt = con.createStatement(); String tableName = "test"; //创建表 stmt.execute("create table if not exists " + tableName + " (id bigint, name string,age int)"); //插入 stmt.execute("insert into " +tableName + "( id ,name ,age ) values(1,'张三',100 )" ); stmt.execute("insert into " +tableName + "( id ,name ,age ) values(2,'李四',200 )" ); stmt.execute("insert into " +tableName + "( id ,name ,age ) values(3,'王五',300 )" ); //查询 ResultSet res = stmt.executeQuery( "select * from " + tableName ); while (res.next()) { System.out.println( res.getLong(1) +"," + res.getString(2) + "," + res.getInt(3) ); } stmt.close(); con.close(); } }
备注:版本2 是 org.apache.hive.jdbc.HiveDriver 版本 1 是 ,org.apache.hadoop.hive.jdbc.HiveDriver
备注2: 协议 版本2 也变成 jdbc:hive2, 版本1 是 jdbc:hive
hive 是一个 mapreduce 的 翻译工具。不是真正的数据库。他也没有真正的存放数据。它适合预先对大数据做统计分析。而不是提供 实时的查询。正常的做法应该使用 hive sql 查询出 统计分析结果,然后 缓存到 及时性高的 数据库中。以供 用户查询。另外 hive的 查询 及时性不高,应该考虑线程阻塞问题。或者直接把查询结果输出到 hdfs的 指定位置。任务执行完成以后我们可以考虑在用户查询的时候直接去这个结果目读取数据。如果有了我们可以吧这个结果缓存起来,下次用户读取就快了。
输入到文件 的方法 参考:https://i.cnblogs.com/EditPosts.aspx?postid=9743514 常见语法部分 第 12 条,