使用impala jdbc驱动程序指定非默认数据库

6psbrbz9  于 2021-06-26  发布在  Impala
关注(0)|答案(2)|浏览(358)

我使用的是impalajdbc驱动程序(或者我猜它实际上是hiveserver2jdbc驱动程序)。我在另一个数据库中创建了一个视图——我们称之为“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

hive2jdbc驱动程序是否忽略了url的数据库部分,并假设所有查询都是针对默认数据库执行的?
使查询返回的唯一方法是更改视图定义本身以包含数据库名称:

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

但是,我希望视图定义中没有数据库名称。
谢谢!

liwlm1x9

liwlm1x91#

您可能需要在jdbc中指定“使用数据库xx;”声明。
另外,如果您已经在使用数据库,请尝试“invalidatemetadata”语句。

db2dz4w8

db2dz4w82#

url为jdbc:hive2://:/55;auth=NOSSL正确
您能否运行一些诊断程序,例如:
show tables-确保在store55中创建视图
您是否在ddl中使用use database命令

相关问题