首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在iReport中连接蜂巢?

如何在iReport中连接蜂巢?
EN

Stack Overflow用户
提问于 2012-02-13 07:08:48
回答 2查看 4.2K关注 0票数 1

我正在使用Hadoop-0.20.0Hive-0.8.0。现在,我将数据输入到Hive表中,并希望从中生成报告。为此,我正在使用iReport-4.5.0。为此,我还在iReport中下载了iReport

现在,我将在iReport中连接Hive连接。

创建新数据源->新-> Hive连接

org.apache.hadoop.hive.jdbc.HiveDriverJdbc驱动器

jdbc:hive//localhost:10000/default Jdbc URl

服务器地址localhost

数据库默认

用户名root

somepassword 密码

然后单击按钮。

我犯了错误,就像:

代码语言:javascript
复制
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)

有人能帮我吗?我哪里错了或者错过了什么?

EN

回答 2

Stack Overflow用户

发布于 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连接。这应该会让事情变清楚。

票数 2
EN

Stack Overflow用户

发布于 2015-08-14 21:23:40

错误"java.lang.RuntimeException:非法的Hadoop版本:未知(预期的A.B.*格式)“是因为hadoop-common.jar中的VersionInfo类试图使用当前线程的类加载程序来定位版本信息。

https://github.com/apache/hadoop/blob/release-2.6.0/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/util/VersionInfo.java#L41-L58

这个密码看起来是这样的..。

代码语言:javascript
复制
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库。然后线程的类加载器将始终能够找到这些信息。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9256733

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档