连接到r中的配置单元

rslzwgfq  于 2021-05-30  发布在  Hadoop
关注(0)|答案(2)|浏览(309)

我正在尝试连接到r的Hive。我已经在我的r env上加载了rjdbc和rjava库。我使用的是一个linux服务器,hadoop(hortonworkssandbox2.1)和r(3.1.1)安装在同一个盒子中。这是我用来连接的脚本:

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
我已经检查了我的类路径是否包含所有的jar文件 /usr/lib/hive 以及 /usr/lib/hadoop ,但无法确定是否还有其他遗漏。知道是什么导致了这个问题吗??我是一个相当新的r(和编程的问题),所以任何具体的步骤是非常感谢。

1cosmwyk

1cosmwyk1#

我用rjdbc和一些配置行成功地从r连接到了hive。我更喜欢rjdbc而不是rhive,因为rhive需要在集群的所有节点上进行复杂的安装(我真的不明白为什么)。
这是我的解决方案:


# 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
mcvgt66p

mcvgt66p2#

您只需使用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")

相关问题