在Hive/bin 目录下输入./hive --service hiveserver 代表hive启动了服务器模式。
和普通模式不同的是,这时hive同时启动了一个名为thrift的服务器。
你不用去研究这个服务器的原理,认为他是一个传递信息的人就好,你可以通过他向hive发送命令,然后hive再把命令送给hadoop。
1.命令行模式:
./hive
-h127.0.0.1 -p10000
简单明了,IP和端口。
2.JDBC模式:
名字很糊人的。
private
static String driverName = "org.apache.hadoop.hive.jdbc.HiveDriver";
@BeforeClass
public
static void beforeclass() throws SQLException,
ClassNotFoundException
{
Class.forName(driverName);
Connection
con = DriverManager.getConnection(
"jdbc:hive://127.0.0.1:10000/default",
"", "");
stmt
= con.createStatement();
}
@Test
public
void dropTable() {
try
{
res
= stmt.executeQuery("drop table " + tablename);
res
= stmt.executeQuery("drop table " + basetable);
//
res = stmt.executeQuery("drop table " + agecount);
}
catch (SQLException e) {
e.printStackTrace();
}
}
上面就是一段通过JDBC删除表的代码。
和传统的JDBC相比,HIVE的JDBC功能性和易用性我都觉得差很多。
只不过HIVE的语句风格和传统SQL很像,所以人们才发明了这个东西。有点不伦不类。在UADF方面还不是很好,不是很喜欢。
3.JAVA客户端
TTransport
transport;
TProtocol
protocol;
HiveClient
client;
transport
= new TSocket("localhost", 10000);
protocol
= new TBinaryProtocol(transport);
client
= new HiveClient(protocol);
transport.open();
client.execute("select
usercount(userid) from user3");
transport.close();
很明显,我们调用HIVE的API生成了一个JAVA的HIVE客户端,这个客户端和命令行的客户端效果是一样的。
改参数,UDAF
都很完美的支持,我比较喜欢这个。
和普通模式不同的是,这时hive同时启动了一个名为thrift的服务器。
你不用去研究这个服务器的原理,认为他是一个传递信息的人就好,你可以通过他向hive发送命令,然后hive再把命令送给hadoop。
1.命令行模式:
2.JDBC模式:
上面就是一段通过JDBC删除表的代码。
和传统的JDBC相比,HIVE的JDBC功能性和易用性我都觉得差很多。
只不过HIVE的语句风格和传统SQL很像,所以人们才发明了这个东西。有点不伦不类。在UADF方面还不是很好,不是很喜欢。
3.JAVA客户端