2014-01-22 116 views
3

我正在使用Impala JDBC驱动程序(或者我猜它实际上是Hive Server 2 JDBC驱动程序)。我在另一个数据库中创建了一个视图 - 我们称之为“store55”。使用Impala JDBC驱动程序指定非默认数据库

比方说,我的看法如下定义:

CREATE VIEW good_customers AS 
SELECT * from customers WHERE good = true; 

当我尝试查询使用JDBC如下这样的观点:

SELECT * FROM store55.good_customers LIMIT 10 

我得到一个错误,如:

java.sql.SQLException: AnalysisException: Table does not exist: default.customers 

理想情况下,我想在JDBC URL中指定数据库名称或作为参数,但是当我尝试使用这个JDBC URL,我仍然得到了同样的错误:

jdbc:hive2://<host>:<port>/store55;auth=noSasl 

能源部Hive2 JDBC驱动程序忽略该URL的数据库部分,并承担所有查询都对默认数据库执行?

我能够有查询返回的唯一方法就是改变视图定义本身,包括数据库名:

CREATE VIEW good_customers AS 
SELECT * from store55.customers WHERE good = true; 

不过,我想保持视图定义免费的数据库名称。

谢谢!

+0

你发现了吗?如果是,请发布答案 – Tony

回答

-1

的URL为jdbc:hive2://:/ store55; AUTH = noSasl正确

,可以在运行一些诊断,比如:

  1. SHOW TABLES - 以确保该视图中创建store55

你在使用USE DATABASE命令DDL的

0

你可能想在JDBC指定 “使用数据库XXXXX;”声明。

另外,如果您已经在使用数据库,请尝试“invalidate metadata”语句。

相关问题