ハイブクライアントオペレーティング
ハイブクライアントオペレーティング
- JDBC操作ハイブにより、
- ハイブスリフトを操作することにより、
JDBC操作ハイブにより、
-
まず、リモートサービスハイブを開始
ハイブ--service hiveserver
-
必要なjarパッケージ
パブリック クラスTestQuery {
プライベート 静的な最終文字列dirver = 「org.apache.hadoop.hive.jdbc.HiveDriver 」。
プライベート 静的な最終文字列のURL = " はjdbc:ハイブ://192.168.131.111:10000 /デフォルト" 。
@Test
公共 ボイドtestQuery()例外{スロー
にClass.forName(dirver)を、
文字列のSQL = " EMPから選択* " ;
接続でCONN = したDriverManager.getConnection(URL);
声明ST = conn.createStatement()。
ResultSetのRS = st.executeQuery(SQL)。
一方、(rs.next()){
// 不能写列名
文字列ENAME = rs.getString(2 )。
INT SAL = rs.getInt(6 )。
システム。アウト .println(ENAME + " \ tの" + SAL)。
}
JDBCUtil.release(CONN、ST、RS)。
}
}
ハイブスリフトを操作することにより、
package com.zd.thrift;
import java.util.List;
import org.apache.hadoop.hive.service.HiveClient;
import org.apache.thrift.protocol.TBinaryProtocol;
import org.apache.thrift.protocol.TProtocol;
import org.apache.thrift.transport.TSocket;
import org.junit.Test;
public class TestThrift {
@Test
public void testThrift() throws Exception{
//创建socket连接
TSocket socket = new TSocket("192.168.131.111",10000);
TProtocol prot = new TBinaryProtocol(socket);
//创建HiveClient
HiveClient client = new HiveClient(prot);
//打开socket通信
socket.open();
//执行HQL语句
//client.execute("desc emp");
client.execute("select * from emp where deptno=10");
//取出返回的结果
List<String> list = client.fetchAll();
//结果集以行为单位 被封装进List
for (String string : list) {
System.out.println(string);
}
socket.close();
}
}