连接到Hive时使用Spark的Kinit

时间:2017-05-01 16:28:15

标签: apache-spark hive hdfs kerberos

我正在尝试从独立的Spark连接到Hive(hadoop集群具有kerberos身份验证)。

有人可以让我知道如何在火花程序中使用kinit我可以连接到蜂巢吗?

更新:我的Spark与Hadoop不同的群集

2 个答案:

答案 0 :(得分:1)

假设你打开了一个spark-shell并且你不想退出,然后重新启动你可以做这样的事情:

import java.lang.ProcessBuilder
import java.io.PrintWriter

//resets your kerberos login
val p1 = Runtime.getRuntime.exec("kdestroy")
p1.waitFor
//executes kinit, 
val p = Runtime.getRuntime.exec("kinit")
val stdin = p.getOutputStream
val pw =new PrintWriter(stdin)
//val pwd = get_password() //get_password() is a function to get your password from a file, or wherever
pw.println(pwd) // you could put your password here , but plain text passwords are generally frowned upon
pw.close
p.waitFor

答案 1 :(得分:0)

你应该在初始化spark-shell之前运行kinit命令或者提交一个spark app(spark-submit)。另一个选择是使用keytab获取kerberos票证并像这样运行你的spark程序

bash -c "kinit -kt /path/to/key/mykey.keytab myuser@KERBEROS.SERVER.COM; spark-shell"

的问候,