http://blog.youkuaiyun.com/jackfor001/article/details/7031943
测试环境 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);
}
}
测试环境 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);
}
}
本文探讨了Hive的不同连接方式及其适用场景:CLI适用于测试而非产品开发;JDBC连接常见但不稳定;直接使用Hive Driverclass可能提高速度。文中还提供了一个使用Driverclass进行查询的Java示例。
643

被折叠的 条评论
为什么被折叠?



