Scala本地连接带有kerberos的Hive

Scala本地连接带有kerberos的Hive,网上找了很多但是自己实际用起来还是连不上,所以贴上可用的版本。

XXX.keytab,krb5.conf,truststore这单个文件要在服务器上下载到本地,放在项目resources目录下的Kerberos目录下面。

代码中的confPath路径就是实际本地路径,例如项目resources目录下的Kerberos目录:

"C:\\UseXXX\\Project\\MY_Projects\\test3\\src\\main\\resources\\Kerberos\\"
def initSpark() : SparkConf = {
    val isWin = System.getProperty("os.name").toLowerCase().startsWith("windows")
    println("current env isWin = "+isWin)
    val sparkConf = new SparkConf()
    if(isWin){
      val confPath = this.getClass.getClassLoader.getResource("Kerberos/").getPath
      // val confPath = "C:\\Users\\XXX\\Project\\MY_Projects\\test3\\src\\main\\resources\\Kerberos\\"
      println("confPath: "+confPath)
      val conf = new Configuration
      System.setProperty("java.security.krb5.conf", confPath + "krb5.conf")
      System.setProperty("javax.net.ssl.trustStore", confPath + "truststore")
      System.setProperty("javax.net.ssl.trustStorePassword", "changeit")
      System.setProperty("javax.security.auth.useSubjectCredsOnly", "false")
      System.setProperty("sun.security.krb5.debug", "true")
     // conf.set("hadoop.security.authentication", "Kerberos")
      UserGroupInformation.setConfiguration(conf)
      UserGroupInformation.loginUserFromKeytab("XXX@XXX.NET", confPath + "XXX.keytab")
      sparkConf.set("spark.yarn.keytab", confPath + "XXX.keytab").set("spark.yarn.principal", "XXX@XXX.NET")
      System.out.println(UserGroupInformation.getCurrentUser)
    }
    return sparkConf    
  }

调用代码如下:

def main(args: Array[String]): Unit = {  

  //设置日志输出级别
  Logger.getLogger("org").setLevel(Level.WARN)
  val sparkSession = SparkSession.builder().appName("test1").master("local[*]").config(InitSpark().initSpark()).enableHiveSupport.getOrCreate
  sparkSession.sql("select * from table ").show()
  sparkSession.sparkContext.stop()

}

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值