3

私は 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;

ただし、ビュー定義にデータベース名を含めないようにしたいと思います。

ありがとう!

4

2 に答える 2

0

JDBC で「use database xxxxx;」を指定することもできます。声明。

また、すでにデータベースを使用している場合は、「invalidate metadata」ステートメントを試してください。

于 2015-07-13T14:55:10.507 に答える