我正在尝试通过 R 远程连接到 Hive 服务器,并使用 Kerberos 密钥表文件执行身份验证。
.jcall("RJavaTools", "Ljava/lang/Object;", "invokeMethod", cl, : java.io.IOException: 从 keytab C:/Users/antonio 登录 antonio.silva@HADOOPREALM.LOCAL 失败。 silva/Desktop/jars/antonio.silva.keytab: javax.security.auth.login.LoginException: null (68)
但是当我尝试通过 keytab 登录用户时,会出现错误。
#loading libraries
library("RJDBC")
hadoop.class.path <- list.files(path = c("C:/Users/antonio.silva/Desktop/jars/hadoop/"), pattern = "jar", full.names = T)
hive.class.path <- list.files(path = c("C:/Users/antonio.silva/Desktop/jars/hive/"), pattern = "jar", full.names = T)
class.path = c(hadoop.class.path,hive.class.path)
.jinit(classpath=class.path)
conf = .jnew("org.apache.hadoop.conf.Configuration")
conf$set("hadoop.security.authentication", "kerberos")
ugi = J("org.apache.hadoop.security.UserGroupInformation")
ugi$setConfiguration(conf)
path = "C:/Users/antonio.silva/Desktop/jars/antonio.silva.keytab"
ugi$loginUserFromKeytab('antonio.silva@HADOOPREALM.LOCAL', path)
我做错了什么?