私は 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;
ただし、ビュー定義にデータベース名を含めないようにしたいと思います。
ありがとう!