我正在使用rjdbc0.2-5连接到rstudio中的hive。我的服务器有hadoop-2.4.1和hive-0.14。我按照下面提到的步骤连接到hive。
library(DBI)
library(rJava)
library(RJDBC)
.jinit(parameters="-DrJava.debug=true")
drv <- JDBC("org.apache.hadoop.hive.jdbc.HiveDriver",
c("/home/packages/hive/New folder3/commons-logging-1.1.3.jar",
"/home/packages/hive/New folder3/hive-jdbc-0.14.0.jar",
"/home/packages/hive/New folder3/hive-metastore-0.14.0.jar",
"/home/packages/hive/New folder3/hive-service-0.14.0.jar",
"/home/packages/hive/New folder3/libfb303-0.9.0.jar",
"/home/packages/hive/New folder3/libthrift-0.9.0.jar",
"/home/packages/hive/New folder3/log4j-1.2.16.jar",
"/home/packages/hive/New folder3/slf4j-api-1.7.5.jar",
"/home/packages/hive/New folder3/slf4j-log4j12-1.7.5.jar",
"/home/packages/hive/New folder3/hive-common-0.14.0.jar",
"/home/packages/hive/New folder3/hadoop-core-0.20.2.jar",
"/home/packages/hive/New folder3/hive-serde-0.14.0.jar",
"/home/packages/hive/New folder3/hadoop-common-2.4.1.jar"),
identifier.quote="`")
conHive <- dbConnect(drv, "jdbc:hive://myserver:10000/default",
"usr",
"pwd")
但我总是得到以下错误:
.jcall出错(drv@jdrv,“ljava/sql/connection;”,“connect“,as.character(url)[1],:java.lang.noclassdeffounderror:无法初始化类org.apache.hadoop.hive.conf.hiveconf$confvars
甚至我也尝试过使用不同版本的hive-jar,hive-jdbc-standalone.jar,但似乎什么都不起作用。。我也使用rhive连接到hive,但也没有成功。
有人能帮我吗?。。我有点卡住了:(
2条答案
按热度按时间3ks5zfa01#
ioicmathieu的答案现在对我有效,因为我已经切换到一个旧的Hive罐,例如从3.1.1到2.0.0。
不幸的是,我不能评论他的答案,这就是为什么我写了另一个。
如果遇到以下错误,请尝试旧版本:
.jcall出错(drv@jdrv,“ljava/sql/connection;”,“connect“,as.character(url)[1],:java.sql.sqlexception:无法使用jdbc uri打开客户端传输:jdbc:hive2://主机名:无法建立到的连接jdbc:hive2://主机_name:10000:必填字段“客户端协议”未设置!struct:topensessionreq(客户)_protocol:null,配置:{set:hiveconf:hive.server2.thrift.resultset.default.fetch.size=1000,use:database=default})
jc3wubiy2#
我没有尝试rhive,因为它似乎需要在集群的所有节点上进行复杂的安装。
我成功地使用rjdbc连接到hive,下面是一个在我的hadoop 2.6 cdh5.4集群上工作的代码snipet:
更难的是找到所有需要的jar和在哪里找到它们。。。
更新hivestandalonejar包含使用hive所需的所有内容,将这个独立jar与hadoop公共jar一起使用就足够使用hive了。
所以这是一个简化的版本,不需要担心其他jar的hadoop通用和hive独立jar。