尝试连接到Hive Server时出现RJDBC错误:org.apache.thrift.TApplicationException:方法名称无效:'execute'

时间:2013-09-12 05:41:12

标签: r jdbc hadoop hive rjdbc

我一直在尝试使用RJDBC软件包将R(在本地计算机上)与Hive(服务器)连接,并且看到错误:

.jcall中的错误(drv @ jdrv,“Ljava / sql / Connection;”,“connect”,as.character(url)[1],:   java.sql.SQLException:org.apache.thrift.TApplicationException:方法名称无效:'execute'

我直接将服务器上运行的jar复制到我的本地机器上,这不应该是驱动程序版本的问题。我也尝试使用早期版本的RJDBC软件包,但它也没有用。

我真的很感激任何想法/建议。

我的剧本:

hive_connection< - function(hostname,port,lib_dir,hive_jars){   库(RJDBC)   库(DBI)   库(rJava)   库(Rserve)

#lib_dir:包含jars&的目录司机   hive_class_path< - file.path(lib_dir,hive_jars)

drv< - JDBC('org.apache.hadoop.hive.jdbc.HiveDriver',classPath = hive_class_path,“`”)   server< - sprintf('jdbc:hive://%s:%s',主机名,端口)

return(dbConnect(drv,server,'hive','hive')) }

conn< - hive_connection('hostname',9083,'lib_dir',list.files('lib_dir'))

3 个答案:

答案 0 :(得分:0)

这与驱动程序和端口有关,我在使用jdbc驱动程序连接配置单元时遇到同样的错误。最后我找到了正确的驱动程序和端口服务。它运作良好。

答案 1 :(得分:0)

尝试
 drv <- JDBC( 'org.apache.hadoop.hive.jdbc.HiveDriver',c(hive_class_path ,pattern="jar$" ,full.names=T) )

答案 2 :(得分:0)

我通过以下两个步骤解决了同样的问题 -

改变1:

drv <- JDBC( 'org.apache.hive.jdbc.HiveDriver', classPath= hive_class_path, "`" ) 

更改是在驱动程序中,我注意到了.hadoop

改变2:

server <- sprintf( 'jdbc:hive2://%s:%s', hostname, port )

我在url中添加了“2”以进行连接,以连接到hiveServer2。

我通过阅读 - http://jayunit100.blogspot.com/2013/12/the-anatomy-of-jdbc-connection-in-hive.html

得到了详细的解释