使用Impala JDBC驱动程序指定默认数据库以外的数据库

时间:2014-01-22 17:52:04

标签: impala

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

假设我的观点定义如下:

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

Doe Hive2 JDBC驱动程序是否忽略URL的数据库部分并假设所有查询都是针对默认数据库执行的?

我能够让查询返回的唯一方法是更改​​视图定义本身以包含数据库名称:

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

但是,我想保持视图定义不含数据库名称。

谢谢!

2 个答案:

答案 0 :(得分:0)

您可能希望在JDBC中指定&#34;使用数据库xxxxx;&#34;言。

此外,如果您已经在使用数据库,请尝试&#34;使元数据无效&#34;言。

答案 1 :(得分:-1)

网址为jdbc:hive2://:/ store55; auth = noSasl correct

您可以运行一些诊断程序,例如:

  1. SHOW TABLES - 确保在store55
  2. 中创建视图

    您是否在DDL的

    中使用了USE DATABASE命令