我在RStudio中通过JDBC有一个hive连接没有问题,我在'Tools <Shell:kinit'中创建了Kerberos票证并且一切正常,我可以使用Kerberos TGT.
但是,如果我通过shell/ssh制作相同的方法并在终端(非RStudio)中加载R,则R无法使用Kerberos TGT文件并失败
我如何使用Kerberos票证?
[user @ server~] $:kinit
user @ domain的密码: - i输入密码 -
[user @ server~] $:R
- R load -
> source('samecode.r')
错误由以下原因引起:java.sql.SQLException:无法创建与jdbc的安全连接:hive2:.... etc
任何的想法?如果我们不创建票证,则会在RStudio中发生此错误,但是当它在工具> shell中创建时,一切正常,在控制台中它是不可能的.我尝试用它来创建它
system('kinit');
Run Code Online (Sandbox Code Playgroud)
并创建罚单,但不能在其余代码中使用它
嗨,您可以使用keytab文件和此命令在R中创建kerberos票证:
system("kinit username@ADS.IU.EDU -k -t username.keytab")
Run Code Online (Sandbox Code Playgroud)
要创建keytab你必须通过shell执行此操作:
ktutil
ktutil: addent -password -p username@ADS.IU.EDU -k 1 -e rc4-hmac
Password for username@ADS.IU.EDU: [enter your password]
ktutil: addent -password -p username@ADS.IU.EDU -k 1 -e aes256-cts
Password for username@ADS.IU.EDU: [enter your password]
ktutil: wkt username.keytab
ktutil: quit
Run Code Online (Sandbox Code Playgroud)
这里keytab解释了创建a的所有步骤
该keytab文件必须位于您的工作目录中.