我正在使用Hadoop-0.20.0和Hive-0.8.0。现在,我将数据输入到Hive表中,并希望从中生成报告。为此,我正在使用iReport-4.5.0。为此,我还在iReport中下载了iReport。
现在,我将在iReport中连接Hive连接。
创建新数据源->新-> Hive连接
org.apache.hadoop.hive.jdbc.HiveDriver:Jdbc驱动器
jdbc:hive//localhost:10000/default Jdbc URl
服务器地址:localhost
数据库:默认
用户名:root
somepassword 密码:
然后单击按钮。
我犯了错误,就像:
Exception
Message:
java.lang.RuntimeException: org.apache.hadoop.hive.ql.metadata.HiveException: java.lang.RuntimeException: java.lang.RuntimeException: Illegal Hadoop Version: Unknown (expected A.B.* format)
Level:
SEVERE
Stack Trace:
org.apache.hadoop.hive.ql.metadata.HiveException: java.lang.RuntimeException:
java.lang.RuntimeException: Illegal Hadoop Version: Unknown (expected A.B.* format)
org.apache.hadoop.hive.ql.session.SessionState.start(SessionState.java:226)
org.apache.hadoop.hive.jdbc.HiveConnection.<init>(HiveConnection.java:72)
org.apache.hadoop.hive.jdbc.HiveDriver.connect(HiveDriver.java:110)
com.jaspersoft.ireport.designer.connection.JDBCConnection.getConnection(JDBCConnection.java:140)
com.jaspersoft.ireport.hadoop.hive.connection.HiveConnection.getConnection(HiveConnection.java:48)
com.jaspersoft.ireport.designer.connection.JDBCConnection.test(JDBCConnection.java:447)
com.jaspersoft.ireport.designer.connection.gui.ConnectionDialog.jButtonTestActionPerformed(ConnectionDialog.java:335)
com.jaspersoft.ireport.designer.connection.gui.ConnectionDialog.access$300(ConnectionDialog.java:43)有人能帮我吗?我哪里错了或者错过了什么?
发布于 2012-02-14 06:50:48
“我还在iReport中下载了HivePlugin-0.5.nbm。”
这还不清楚。iReport 4.5预先安装了Hadoop连接器.为什么要分别下载连接器?你安装这个插件了吗?
创建新数据源-->新建--> Hive连接
Jdbc : org.apache.hadoop.hive.jdbc.HiveDriver
..。
对于当前的Hadoop连接器来说,这是不可能的。当您创建一个新的"Hadoop连接“时,您只需要填写一个参数: url。

我猜您在创建Hadoop连接时创建了一个JDBC连接。这是合乎逻辑的做法。通过JDBC访问蜂箱。但是Hive驱动程序仍然是非常新的。它有一些缺点。这就是为什么将Hive连接器添加到iReport的原因。它基于Hive驱动程序,但它包含一个包装器,以避免出现一些问题。
或者,您可能在iReport 4.5中已经包含的Hive连接器的顶部安装了一个旧的Hive连接器。在过去的某个时候,Hive连接器允许您填写额外的信息,比如JDBC驱动程序。
从一个新的iReport安装开始,并确保使用Hadoop连接。这应该会让事情变清楚。
发布于 2015-08-14 21:23:40
错误"java.lang.RuntimeException:非法的Hadoop版本:未知(预期的A.B.*格式)“是因为hadoop-common.jar中的VersionInfo类试图使用当前线程的类加载程序来定位版本信息。
这个密码看起来是这样的..。
package org.apache.hadoop.util;
...
public class VersionInfo {
...
protected VersionInfo(String component) {
info = new Properties();
String versionInfoFile = component + "-version-info.properties";
InputStream is = null;
try {
is = Thread.currentThread().getContextClassLoader()
.getResourceAsStream(versionInfoFile);
if (is == null) {
throw new IOException("Resource not found");
}
info.load(is);
} catch (IOException ex) {
LogFactory.getLog(getClass()).warn("Could not read '" +
versionInfoFile + "', " + ex.toString(), ex);
} finally {
IOUtils.closeStream(is);
}
}如果您的工具试图在一个单独的线程中连接到数据源,它将生成此错误。
解决这个问题的最简单方法是将hadoop-common.jar库放在$JAVA_HOME/lib/ext中,或者使用命令行设置-Djava.endorsed.dirs来指向hadoop-common.jar库。然后线程的类加载器将始终能够找到这些信息。
https://stackoverflow.com/questions/9256733
复制相似问题