使用Kerberos身份验证Hive JDBC连接问题 - R.

时间:2016-06-09 11:00:56

标签: r jdbc hive kerberos rjdbc

我正在尝试使用R中的RJDBC包通过JDBC连接Hive .Hive配置了Kerberos身份验证。我正在使用CDH 5.6.0。 Hive版本是1.1.0。我正在使用以下JARS

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.

我很久没在这里了,请帮我解决这个错误

1 个答案:

答案 0 :(得分:4)

我可以在我的工作场所访问支持Kerberos的群集。我可以使用以下代码进行连接..

第1步:从Cloudera下载最新的JDBC驱动程序。我在Redhat 6(x64)中使用了2.5.18

第2步:解压缩并仅使用JDBC 4连接器API。

第3步:在终端发出命令klist [我希望您使用的是Linux,如果不是,您可能需要设置活动目录]并看到有活动的票证。如果票证不存在,可以[可能在管理员的帮助下]生成它

第4步:有活动票证后[按照步骤3中的说明查看],将所有在步骤2中解压缩的jar放入文件夹中。 [在我的情况下,它位于我的R-project目录中的Drivers/Cloudera-Simba/JDBC4/]

第5步:重要的一点是,如果您有 Sentry 管理Cloudera群集,请确保登录并运行具有所需访问级别的用户的以下R代码

步骤6 :运行以下R代码,并在JDBC Url中配置适当的主机名等。

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配置here的更多信息。