【发布时间】:2013-12-25 11:11:54
【问题描述】:
我是 Hive 的新用户,刚刚开始将它用于一个项目。我在使用 java 连接到数据库时遇到问题。解释如下:
我在我的机器上运行 Hive 数据库,该数据库使用嵌入式 Derby 驱动程序创建了一个 derby metastore_db。现在,我希望通过单独的 Java 程序查询这个metastore_db 以发出查询。
我遵循了可以在网上找到的多种技巧,但仍然无法使其发挥作用。
我的 Java 文件的快照:
String url = "jdbc:derby:metastore_db;create=true";
String username = "APP";
String password = "mine";
String drivername = "org.apache.derby.jdbc.EmbeddedDriver";
Connection con = DriverManager.getConnection(url,username, password);
Statement stmt = con.createStatement();
res = stmt.executeQuery("describe " + tableName);
运行java文件:
我已将它与 metastore_db 放在同一个文件夹中,然后使用以下命令运行它:
java -cp "derby-10.4.2.jar:." ConnectTesting
我得到以下语法异常:
java.sql.SQLException: Syntax error: Encountered "describe" at line 1, column 1.
我已经尝试过的一些事情:
-
url = "jdbc:derby:metastore_db;create=false"; -
url = "jdbc:derby://localhost:10000/metastore_db"; -
url = "jdbc:derby://localhost:1527/metastore_dbDB"; // By default port at which hive listens
以上两个给出的错误为:没有找到适合 jdbc:derby://localhost:10000/metastore_db 的驱动
url = "jdbc:derby:<full_path_to_db>/metastore_db";- 如果我的 HIVE 服务器已经在运行,然后我从另一个终端执行 java 文件,它会显示:
"另一个 Derby 实例可能已经启动了数据库"
谁能指出我做错了什么以及如何连接到已经存在的数据库来发出查询。
【问题讨论】: