我正在尝试从Java连接到Hive服务器1。很久以前我在这个论坛上发现了一个问题,但这对我不起作用。我正在使用此代码:
import java.sql.SQLException;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;
import java.sql.DriverManager;
public class HiveJdbcClient {
private static String driverName = "org.apache.hive.jdbc.HiveDriver";
/**
* @param args
* @throws SQLException
*/
public static void main(String[] args) throws SQLException {
try {
Class.forName(driverName);
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
System.exit(1);
}
//replace "hive" here with the name of the user the queries should run as
Connection con = DriverManager.getConnection("jdbc:hive2://localhost:10000/default", "hive", "");
Statement stmt = con.createStatement();
String tableName = "testHiveDriverTable";
stmt.execute("drop table if exists " + tableName);
stmt.execute("create table " + tableName + " (key int, value string)");
// show tables
String sql = "show tables '" + tableName + "'";
System.out.println("Running: " + sql);
ResultSet res = stmt.executeQuery(sql);
if (res.next()) {
System.out.println(res.getString(1));
}
// describe table
sql = "describe " + tableName;
System.out.println("Running: " + sql);
res = stmt.executeQuery(sql);
while (res.next()) {
System.out.println(res.getString(1) + "\t" + res.getString(2));
}
// load data into table
// NOTE: filepath has to be local to the hive server
// NOTE: /tmp/a.txt is a ctrl-A separated file with two fields per line
String filepath = "/tmp/a.txt";
sql = "load data local inpath '" + filepath + "' into table " + tableName;
System.out.println("Running: " + sql);
stmt.execute(sql);
// select * query
sql = "select * from " + tableName;
System.out.println("Running: " + sql);
res = stmt.executeQuery(sql);
while (res.next()) {
System.out.println(String.valueOf(res.getInt(1)) + "\t" + res.getString(2));
}
// regular hive query
sql = "select count(1) from " + tableName;
System.out.println("Running: " + sql);
res = stmt.executeQuery(sql);
while (res.next()) {
System.out.println(res.getString(1));
}
这就是指南中显示的代码。我已经在.java的同一路径中复制了hive-
metastore,service,jdbc,exec,core和更多.jar。当我编译它时,我得到以下消息:
java.lang.ClassNotFoundException: org.apache.hadoop.hive.jdbc.HiveDriver
at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:190)
at HiveJdbcClient.main(HiveJdbcClient.java:14)
有人知道这里发生了什么吗?
尝试
private static String driverName = "org.apache.hive.jdbc.HiveDriver"
代替
private static String driverName = "org.apache.hadoop.hive.jdbc.HiveDriver";
希望您Class.forName(driverName)
在代码中添加了语句
问题内容: 我用下面的代码连接在从Android系统。它仅显示catch部分中给出的操作。我不知道这是否是连接问题。 执行此代码后,它将在avd中显示“新”。 谁能提出一些解决方案?并预先感谢 问题答案: 您无法从本机访问MySQL数据库。编辑:实际上,您也许可以使用JDBC,但不建议使用(或可能不起作用?)…请参阅Android JDBC不起作用:驱动程序上的ClassNotFoundExcep
问题内容: 文件包含和及其说明(+ )。 是否可以依靠上述文件建立连接?(仅提供数据库名称即可): 为了找到该文件,我必须知道默认的Oracle主目录,我需要在Windows注册表中检入然后具有所有文件,然后检查哪个文件首先出现在上。有没有办法在客户端计算机上自动找到此文件? 问题答案: 我什至不知道可以在瘦驱动程序中使用tnsnames,但是显然它是在版本10中添加的: http://docs.
问题内容: 我正在尝试使用JDBC连接到SQL Server 2008。我的SQL Server 2008带有Windows身份验证。 我的代码是 我最终得到ClassNotFoundException。 堆栈跟踪为 问题答案: ClassNotFoundException可能意味着您的类路径中没有可用的SQL * Server驱动程序
问题内容: 因此,我在项目的构建路径中添加了MySQL Connector / J 5.1.16。我正在使用默认的OSX Java软件包和MAMP Pro 1.9.4,以及MySQL 5.1.44和Eclipse。 我用以下功能设置了一个简单的Java应用程序: 当我运行它时,出现以下错误: 我用谷歌搜索了大约一个小时,没有成功。有想法该怎么解决这个吗?JDBC驱动程序应该很好,我对此进行了测试。
这是我的实体 这是我的主课 这就是我的persistence.xml 堆栈跟踪:
我们所面临的问题已在许多文件中得到充分证明https://stackoverflow.com/questions/34189756/warning-about-ssl-connection-when-connecting-to-mysql-database. 从过渡到时,我们就开始面临这个问题。建议的修复方法对我们有效,但我们有一个问题,我们不想更新Java源文件以进行更改,例如从 到 正如在ht