首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

Hive 的几种联接方式

2012-12-20 
Hive 的几种连接方式测试环境 Hadoop 0.20.2版本、Hive-0.5.0版本、JDK1.6?1、一般来说我们对hive的操作都是

Hive 的几种连接方式

测试环境 Hadoop 0.20.2版本、Hive-0.5.0版本、JDK1.6

?

1、一般来说我们对hive的操作都是通过cli来进行,也就是Linux的控制台,但是,这样做本质上是每个连接都存放一个元数据,各个之间都不相同,所以,对于这样的模式我建议是用来做一些测试比较合适,并不适合做产品的开发和应用。

?

2、JDBC连接的方式,当然还有其他的连接方式,比如ODBC等, 这种方式很常用,可以在网上随便找到,就不再累赘了。

?

3、这种方式是直接利用Hive的 Driver class 来直接连接,感觉这种方式不通过JDBC,应该速度会比较快一点(未经验证)。我只是在local模式下测试过。

?

import org.apache.hadoop.hive.conf.HiveConf;
import org.apache.hadoop.hive.ql.Driver;
import org.apache.hadoop.hive.ql.session.SessionState;

?

public class Test {

??? public static void main(String args[]) {
??????? Vector<String> res = new Vector<String>();
??????? String sql = "SELECT * from test";
??????? Driver driver = new Driver(new HiveConf(SessionState.class));
??????? int ret = driver.run(sql);
??????? try {
??????????? driver.getResults(res);
??????? } catch(IOException e) {
??????????? e.printStackTrace();
??????? }
??????? driver.close();
??????? System.out.println(driver.getMaxRows());
??????? try {
??????????? System.out.println(driver.getSchema());
??????????? //System.out.println(driver.getThriftSchema());
??????? } catch(Exception e) {
??????????? // TODO Auto-generated catch block
??????????? e.printStackTrace();
??????? }???????
//??????? System.out.println(res);
//??????? System.out.println(ret);
??? }
}

?

?

热点排行