【问题标题】:Specifying database other than default with Impala JDBC driver使用 Impala JDBC 驱动程序指定非默认数据库
【发布时间】:2014-01-22 17:52:03
【问题描述】:

我正在使用 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

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

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

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

但是,我希望视图定义不包含数据库名称。

谢谢!

【问题讨论】:

  • 你发现了吗?如果是,请发表答案

标签: impala


【解决方案1】:

您可能希望在 JDBC 中指定“使用数据库 xxxxx;”声明。

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

【讨论】:

    【解决方案2】:

    网址是 jdbc:hive2://:/store55;auth=noSasl 正确

    您能否运行一些诊断程序,例如:

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

    您是否在 DDL 中使用 USE DATABASE 命令

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-13
      • 1970-01-01
      • 2010-10-25
      • 2016-09-29
      • 1970-01-01
      • 2013-06-24
      相关资源
      最近更新 更多