Hive的Thrift服务
Posted 健哥说编程
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Hive的Thrift服务相关的知识,希望对你有一定的参考价值。
Hive的Thrift服务
Hive有一个可选组件叫HiveServer或HiveThrift。可以通过指定的端口让其他访问访问hive。
在hive1.x版本为hiveServer2。
1、启动hiveserver2
$ hive --service hiveserver2 &
2、连接到hiveserver2
先启动beeline
然后再使用:
beeline> !connect jdbc:hive2://hadoop81:10000/db01 wangjian 123456
其中:wangjian 123456是linux登录的用户名和密码。
执行更多的查询:
3、JDBC连接到hiveserver2
需要以下依赖:
<dependency>
<groupId>org.apache.hive</groupId>
<artifactId>hive-beeline</artifactId>
<version>1.2.2</version>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.5.6</version>
</dependency>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-common</artifactId>
<version>2.7.6</version>
</dependency>
Java代码:
@Test
public void test1() throws Exception {
Class.forName("org.apache.hive.jdbc.HiveDriver");
String url = "jdbc:hive2://hadoop81:10000/db01";
Connection con =
DriverManager.getConnection(url, "wangjian", "123456");
System.err.println(con);
Statement st = con.createStatement();
ResultSet rs = st.executeQuery("select * from stud");
while(rs.next()) {
String id = rs.getString("id");
String name =rs.getString("name");
System.err.println(id+","+name);
}
rs.close();
st.close();
con.close();
}
输出:(表的数据)
1,Jack
2,Mary
3,Alex
Java代码执行一个聚合查询:
@Test
public void test1() throws Exception {
Class.forName("org.apache.hive.jdbc.HiveDriver");
String url = "jdbc:hive2://hadoop81:10000/db01";
Connection con =
DriverManager.getConnection(url, "wangjian", "123456");
System.err.println(con);
Statement st = con.createStatement();
ResultSet rs = st.executeQuery("select count(1) from stud");
rs.next();
Long rows = rs.getLong(1);
System.err.println("rows :"+rows);
rs.close();
st.close();
con.close();
}
后台就会执行一个MR:
最后在JDBC客户方显示结果:
rows :5
以上是关于Hive的Thrift服务的主要内容,如果未能解决你的问题,请参考以下文章
如何扩展Hive Metastore Thrift RPC服务接口