尝试连接到配置单元服务器时出现rjdbc错误:org.apache.thrift.tapplicationexception:方法名称无效:“execute”

a6b3iqyw  于 2021-06-03  发布在  Hadoop
关注(0)|答案(3)|浏览(390)

我一直在尝试使用rjdbc包将r(在本地计算机上)与hive(服务器)连接,但发现了以下错误:
.jcall出错(drv@jdrv,“ljava/sql/connection;”,“connect”,as.character(url)[1],:java.sql.sqlexception:org.apache.thrift.tapplicationexception:方法名无效:“execute”
我直接将服务器上运行的jar复制到本地机器上,这样驱动程序版本就不会有问题了。我也尝试过使用rjdbc包的早期版本,但也不起作用。
如有任何意见/建议,我将不胜感激。
我的剧本:

配置单元连接<-函数(主机名、端口、库目录、配置单元jar){library(rjdbc)library(dbi)library(rjava)library(rserve)

lib\u dir:包含jar和驱动程序的目录hive\u class\u path<-file.path(lib\u dir,hive\u jars)

drv<-jdbc('org.apache.hadoop.hive.jdbc.hivedriver',classpath=hive\u class\u path,“`”)服务器<-sprintf('jdbc:hive://%s:%s',主机名,端口)
return(dbconnect(drv,服务器,'hive','hive'))}
conn<-hive\u connection('hostname',9083,'lib\u dir',list.files('lib\u dir'))

xmq68pz9

xmq68pz91#

我通过以下两个步骤解决了同样的问题-
变化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

aemubtdh

aemubtdh2#

这与驱动程序和端口有关,我在用jdbc驱动程序连接hive时遇到了相同的错误。最后,我找到了正确的驱动程序和配置单元服务与端口。效果不错。

neekobn8

neekobn83#

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

相关问题