r

pinkon5k  于 2021-06-29  发布在  Hive
关注(0)|答案(1)|浏览(461)

我试图通过jdbc连接hive,使用r中的rjdbc包。配置单元配置了kerberos身份验证。我正在使用cdh 5.6.0。配置单元版本为1.1.0。我在用下面的jar

hive-jdbc-1.1.0-cdh5.6.0-standalone
hadoop-common-2.6.0-cdh5.6.0

我的密码是
library(RJDBC) drv <- JDBC("com.cloudera.hive.jdbc4.HS2Driver",list.files("Jars/",pattern="jar$",full.names=T)) url.dbc = paste0("jdbc:hive2://xx.xx.xx.xx:10000/default;principal=hive/xx.xx.xx.xx@XXX.COM"); conn=dbConnect(drv,url.dbc,"username","password") 在执行这段代码时,我遇到了以下错误, Error in .jcall(drv@jdrv, "Ljava/sql/Connection;", "connect", as.character(url)[1], : java.sql.SQLException: [Cloudera][HiveJDBCDriver](500164) Error initialized or created transport for authentication: Peer indicated failure: Unsupported mechanism type PLAIN. 我在这里呆了很久,请帮我纠正这个错误

4zcjmb1e

4zcjmb1e1#

我可以访问工作区中启用了kerberos的集群。我可以使用以下代码连接。。
步骤1:从cloudera下载最新的jdbc驱动程序。我在redhat 6(x64)中使用了2.5.18
步骤2:解压并仅使用JDBC4连接器api。
第三步:发出命令 klist 在terminal[我希望您使用的是linux,如果不是的话,您可能需要设置active directory]并查看是否有活动票据。如果票证不存在,则生成它[可能需要管理员的帮助]
第4步:一旦你有了有效的票证[见第3步所述]把第2步中解压的所有jar放在一个文件夹中[我的情况是这样的 Drivers/Cloudera-Simba/JDBC4/ 在我的r项目目录中]
第5步:一件重要的事情是,如果您有sentry管理cloudera集群,请确保从具有所需访问级别的用户处登录并运行以下r代码。
第6步:用jdbcurl中配置的适当主机名etc运行以下r代码。

drvH <- JDBC(driverClass = "com.cloudera.hive.jdbc4.HS2Driver", 
             classPath = normalizePath(list.files("Drivers/Cloudera-Simba/JDBC4/", pattern = ".jar$", full.names = T, recursive = T)), 
             identifier.quote="`")

connH <- dbConnect(drvH, "jdbc:hive2://master.rbi.org.in:10000;AuthMech=1;KrbRealm=YOUR_REALM.COM;KrbHostFQDN=master.rbi.org.in;KrbServiceName=hive")

# test it

dbGetQuery(connH, "show databases")

希望这有帮助。
您可以在这里找到有关kerberos配置的更多信息。

相关问题