2

我正在尝试使用 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.

我在这里被打了很长时间,请帮助我解决这个错误

4

1 回答 1

4

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

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

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

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

第 4 步:一旦您拥有有效票证 [参见第 3 步中所述的],请将第 2 步中解压缩的所有 jar 文件放入一个文件夹中。[在我的情况下,它位于Drivers/Cloudera-Simba/JDBC4/我的 R-project 目录中]

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

第 6 步:使用在 JDBC Url 中配置的适当主机名等运行以下 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 配置的更多信息。

于 2017-01-19T05:52:30.977 回答