各位老大,最近忙吗??? 最近在做hive的一些东东,用的是1.2.1版本的。 先用java实现hive-jdbc,连接成功,也可以运行,具体的过程再不写了,贴一点代码,关于hive1.2.1 和0.x.x 版本的不同。
private static String driverName = "org.apache.hive.jdbc.HiveDriver";
public static void main(String[] args) throws Exception {
Class.forName(driverName);
// get connection
System.out.println("________________");
Connection con = DriverManager.getConnection("jdbc:hive2://192.168.222.128:10000/default", "root", "");
System.out.println("++++++++++++++++");
Statement stmt = con.createStatement();
//
ResultSet rest=stmt.executeQuery("select * from student");
while(rest.next())
{
System.out.println(rest.getString(1)+" "+rest.getString(2)+" "+ rest.getString(3)+" "+ rest.getString(4));
}
con.close();
}
注意: driverName和 getConnection中的第一个参数,这就是和0.x.x 之前的不同。 也许你连接不上hive的错误就是这两个小地方造成的。
python 可以连接mysql,mongo,都有对应的包提供,只要你自己之前安装了mysql,mongo,那么就可以连接你自己的外部数据库。没问题的,
python连接hive,可能0.x.x 和1.2.1 以及以后的有一个质的区别,在这里使用python连接也出现了问题,其实可以发现,出现的 问题和前面用java的错误是一样的
推荐的做法是pyhs2 , 估计大家都知道了。
csdn 上有pyhs2 .tar.gz 包,我上传了,不知道在哪,自个找吧。
安装中肯定会有问题的。。。。。 我的是ubuntu14 32位,具体安装如下
具体安装如上,问题是sasl包有问题, 换了一个libsasl包
具体的测试代码如下
import pyhs2
with pyhs2.connect(host='192.168.222.128',
port=10000,
authMechanism="PLAIN",
user='root',
password='************',
database='default') as conn:
with conn.cursor() as cur:
#Show databases
print cur.getDatabases()
#Execute query
cur.execute("select * from student")
#Return column info from query
print cur.getSchema()
#Fetch table results
for i in cur.fetch():
print i
注意了: hive连接需要用户名,密码,java连接的时候只用了root用户名,这里还需要密码,就是你 登录Ubuntu的密码,不过,应该可以自己设定hive用户名和密码,我也不知道。。。。。。。这个先将就用吧。
ok了。。。。。。。