Как использовать Apache Spark для запроса таблицы Hive с Kerberos? - PullRequest
0 голосов
/ 20 марта 2020

Я пытаюсь использовать Scala с Apache Spark локально для запроса таблицы Hive, которая защищена с помощью Kerberos. У меня нет проблем с подключением и запросом данных программно без Spark. Однако проблема возникает, когда я пытаюсь подключиться и выполнить запрос в Spark.

Мой код при локальном запуске без искры:

Class.forName("org.apache.hive.jdbc.HiveDriver")

    System.setProperty("kerberos.keytab", keytab)
    System.setProperty("kerberos.principal", keytab)
    System.setProperty("java.security.krb5.conf", krb5.conf)
    System.setProperty("java.security.auth.login.config", jaas.conf)

    val conf = new Configuration
    conf.set("hadoop.security.authentication", "Kerberos")

    UserGroupInformation.setConfiguration(conf)
    UserGroupInformation.createProxyUser("user", UserGroupInformation.getLoginUser)
    UserGroupInformation.loginUserFromKeytab(user, keytab)
    UserGroupInformation.getLoginUser.checkTGTAndReloginFromKeytab()

    if (UserGroupInformation.isLoginKeytabBased) {
      UserGroupInformation.getLoginUser.reloginFromKeytab()
    }
    else if (UserGroupInformation.isLoginTicketBased) UserGroupInformation.getLoginUser.reloginFromTicketCache()

    val con = DriverManager.getConnection("jdbc:hive://hdpe-hive.company.com:10000", user, password)
    val ps = con.prepareStatement("select * from table limit 5").executeQuery();

Кто-нибудь знает, как я могу включить keytab, krb5.conf и jaas.conf в мою функцию инициализации Spark, чтобы я мог пройти аутентификацию в Kerberos для получения TGT?

Функция инициализации My Spark:

conf = new SparkConf().setAppName("mediumData")
      .setMaster(numCores)
      .set("spark.driver.host", "localhost")
      .set("spark.ui.enabled","true") //enable spark UI
      .set("spark.sql.shuffle.partitions",defaultPartitions)
    sparkSession = SparkSession.builder.config(conf).enableHiveSupport().getOrCreate()

У меня нет таких файлов, как hive-site. xml, core-site. xml.

Спасибо!

...