2

我在 Windows PC 上安装了 R 2.15.2。Hadoop 和 Hive 在另一台 PC 上。我将 RHive 及其依赖项加载到 R 中。现在我正在尝试连接到 Hive。

> Sys.setenv(HIVE_HOME="/home/hadoop/hive-0.7.0-cdh3u0")
> Sys.setenv(HADOOP_HOME="/home/hadoop/hadoop-0.20.2-cdh3u0")
> library(RHive)
> rhive.env(ALL=TRUE)

Hive 主目录:/home/hadoop/hive-0.7.0-cdh3u0
Hadoop 主目录:/home/hadoop/hive-0.7.0-cdh3u0
Hadoop 配置目录:
No RServe
Disconnected HiveServer 和 HDFS
RHive 库列表
C:/Program Files /R/R-2.15.2/library/RHive/java/rhive_udf.jar /home/hadoop/hive-0.7.0-cdh3u0/conf

> rhive.init()

[1] “HADOOP 没有 slaves 文件。所以你应该在调用 rhive.connect() 时传递 hosts 参数。”
.jnew("org/apache/hadoop/conf/Configuration") 中的错误:java.lang.ClassNotFoundException
另外:警告消息:
在文件中(文件,“rt”):无法打开文件'/home/hadoop/hadoop- 0.20.2-cdh3u0/conf/slaves':没有这样的文件或目录

> rhive.connect(hdfsurl="hdfs://212.63.135.149:9000/")

.jnew("org/apache/hadoop/conf/Configuration") 中的错误:java.lang.ClassNotFoundException

结果是连接错误!

甚至尝试过 rhive.connect(host = "212.63.135.149", port = 10000, hdfsurl="hdfs://212.63.135.149:9000/"),但没有用。

4

3 回答 3

1

我通过修复 rhive_udf.jar 类路径来修复它(在构建后在 RHive 源目录中找到)

mkdir –p /usr/lib64/R/library/RHive/java
cp rhive_udf.jar //usr/lib64/R/library/RHive/java
chmod 755 /usr/lib64/R/library/RHive/java/rhive_udf.jar
R
> library("rJava")
> .jinit()
> .jaddClassPath("/usr/lib64/R/library/RHive/java/rhive_udf.jar")

然后使用以下命令测试新添加的类路径:

> .jclassPath()

您应该在列表中看到“/usr/lib64/R/library/RHive/java/rhive_udf.jar”!

然后重新启动 R - 就可以了!

于 2013-06-10T16:04:36.233 回答
1

几周前我在安装 RHive 时遇到了同样的问题。这是因为某些 jar 文件不在 rhive.init 中设置的类路径中。您需要设置参数 hive、libs、hadoop_home、hadoop_conf、hlibs 来指示这些 jar 文件的位置。

我首先从源代码安装,它与 rhive.init 一起使用,但 rhive.connect 无法正常工作。当我通过 Cloudera 管理器https://ccp.cloudera.com/display/CDH4DOC/Hive+Installation安装 Hive 时,它​​确实像一个魅力。因此,我建议您按照那里的说明进行操作,这是有据可查的。

于 2012-12-13T09:28:40.690 回答
1

可能是因为您使用了错误的 Hadoop 版本。

RHive 不适用于 YARN,然后使用 hadoop-0.20.205.0 或更早版本。

于 2013-05-05T09:28:55.077 回答