暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Hive的Thrift服务

Coding On Road 2018-07-14
620

HiveThrift服务


Hive有一个可选组件叫HiveServerHiveThrift。可以通过指定的端口让其他访问访问hive

hive1.x版本为hiveServer2

 

1、启动hiveserver2

$ hive --service hiveserver2 &

 

2、连接到hiveserver2

先启动beeline

然后再使用:

beeline> !connect jdbc:hive2://hadoop81:10000/db01 wangjian 123456

其中:wangjian 123456linux登录的用户名和密码。

 

 

执行更多的查询:

 

 

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


文章转载自Coding On Road,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论