Как подключиться к HIVE через R с помощью Kerberos keytab? - PullRequest
0 голосов
/ 04 декабря 2018

Я пытаюсь подключиться к серверу Hive через R удаленно, и для выполнения аутентификации я использую файл ключей Kerberos.

Ошибка в .jcall ("RJavaTools", "Ljava / lang"/ Object; "," invokeMethod ", cl,: java.io.IOException: ошибка входа для antonio.silva@HADOOPREALM.LOCAL из таблицы ключей C: /Users/antonio.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)

Что я делаюне так?

1 Ответ

0 голосов
/ 11 декабря 2018

Я нашел решение, оказывается, мне нужно было поместить файл conf MIT Kerberos (krb5.conf) в каталог java "" ~ \ Java \ jre1.8.0_192 \ lib \ security ".

После вставки файла в каталог я смог успешно выполнить соединение и подключился к серверу Hive, используя следующий код в дополнение к ранее опубликованному коду:

drv <- JDBC("org.apache.hive.jdbc.HiveDriver")
conn <- dbConnect(drv, "jdbc:hive2://hivename:10000/default;principal=hive/_HOST@HADOOPREALM.LOCAL")

Эти проверки учетных данных действительны, когда необходимо выполнить подключение через R к HDFS, где я разместил ответ о подключении и настройках, необходимых для чтения и записи файлов на сервере HDFS с R.

Конфигурация HDFS: Как получить доступ к HDFS через R?

...