使用RHive Package进行R到Hive的连接

时间:2012-12-13 08:55:20

标签: r hive

我在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 Conf目录:
  没有RServe
  断开连接的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/"),但没有用。

3 个答案:

答案 0 :(得分: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时,它确实像魅力一样。所以我建议你按照那里的说明进行操作,这是有据可查的。

答案 1 :(得分:1)

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

RHive不能与YARN一起使用,然后使用hadoop-0.20.205.0或更早版本。

答案 2 :(得分: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 - 然后你就去了!