连接到R中的Hive

时间:2014-09-16 04:26:39

标签: r hadoop jdbc

我正在尝试连接到R中的hive。我已经在我的R env上加载了RJDBC和rJava库。 我使用的是带有hadoop(hortonworks sandbox 2.1)和R(3.1.1)安装在同一个盒子中的Linux服务器。这是我用来连接的脚本:

drv <- JDBC("org.apache.hive.jdbc.HiveDriver", "/usr/lib/hive/lib/hive-jdbc.jar")
conn <- dbConnect(drv, "jdbc:hive2://localhost:10000/default")

我收到此错误:

  

.jcall中的错误(drv @ jdrv,“Ljava / sql / Connection;”,“connect”,as.character(url)[1] ,: java.lang.NoClassDefFoundError:无法初始化类org.apache。 hive.service.auth.HiveAuthFactory

我已检查过我的classpath包含/usr/lib/hive/usr/lib/hadoop中的所有jar文件,但无法确定是否还有其他内容丢失。知道是什么导致了这个问题吗? 我是R的新手(并为此编程),所以我们非常感谢任何特定的步骤。

2 个答案:

答案 0 :(得分:0)

您只需使用RHIVE包

从R连接到hiveserver2即可

以下是我必须使用的命令。

Sys.setenv(HIVE_HOME="/usr/local/hive") Sys.setenv(HADOOP_HOME="/usr/local/hadoop") rhive.env(ALL=TRUE) rhive.init() rhive.connect("localhost")

答案 1 :(得分:0)

我使用RJDBC和一些配置线成功地从R连接到Hive。我更喜欢RJDBC到rHive,因为rHive需要在集群的所有节点上进行复杂的安装(而且我真的不明白为什么)。

这是我的R解决方案:

#loading libraries
library("DBI")
library("rJava")
library("RJDBC")

#init of the classpath (works with hadoop 2.6 on CDH 5.4 installation)
cp = c("/usr/lib/hive/lib/hive-jdbc.jar", "/usr/lib/hadoop/client/hadoop-common.jar", "/usr/lib/hive/lib/libthrift-0.9.2.jar", "/usr/lib/hive/lib/hive-service.jar", "/usr/lib/hive/lib/httpclient-4.2.5.jar", "/usr/lib/hive/lib/httpcore-4.2.5.jar", "/usr/lib/hive/lib/hive-jdbc-standalone.jar")
.jinit(classpath=cp)

#init of the connexion to Hive server
drv <- JDBC("org.apache.hive.jdbc.HiveDriver", "/usr/lib/hive/lib/hive-jdbc.jar", identifier.quote="`")
conn <- dbConnect(drv, "jdbc:hive2://localhost:10000/mydb", "myuser", "")

#working with the connexion
show_databases <- dbGetQuery(conn, "show databases")
show_databases