2014-01-22 44 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」語句。

相關問題