Проблема доступа к удаленному мета-хранилищу Hive (hive-1.1.0) с использованием Kerberos при использовании SQL Spark (1.6.0) - PullRequest
0 голосов
/ 30 мая 2018

Версия My Hive - 1.1.0, а spark - 1.6.0. Нет проблем с подключением.Я могу сделать соединение успешным.

После подключения при импорте данных или создании канала передачи данных с использованием подключения куста я вижу имя базы данных и принадлежащие ей таблицы, но получаю ошибку (java.lang.IllegalArgumentException: java.net.UnknownHostException: xxx-nameservice) при извлечении данных из таблицы.Ниже приведен мой код:

val hiveContext = new org.apache.spark.sql.hive.HiveContext(sc)
hiveContext.setConf("hive.metastore.uris", prop.getProperty("hive.metastore.uris"))
hiveContext.setConf("hive.metastore.sasl.enabled", prop.getProperty("hive.metastore.sasl.enabled"))
hiveContext.setConf("hive.security.authorization.enabled", prop.getProperty("hive.security.authorization.enabled"))
hiveContext.setConf("hive.metastore.kerberos.principal", prop.getProperty("hive.metastore.kerberos.principal"))
hiveContext.setConf("hive.metastore.execute.setugi", prop.getProperty("hive.metastore.execute.setugi"))
hiveContext.sql("use abc")   
hiveContext.sql("show tables").show(4) // This is working
hiveContext.sql("select * from abc.tab1 limit 10").show(2)

Ниже приводится проблема:

java.lang.IllegalArgumentException: java.net.UnknownHostException: xxx-nameservice на org.apache.hadoop.security.SecurityUtil.buildTokenService (SecurityUtil.java:406) в org.apache.hadoop.hdfs.NameNodeProxies.createNonHAProxy (NameNodeProxies.java:310) в org.apache.hadoop.hdfs.NameNodeProxies.createProxy: имя_узла или в узле NameNodeapache.hadoop.hdfs.DFSClient. (DFSClient.java:728) в org.apache.hadoop.hdfs.DFSClient. (DFSClient.java:671) в org.apache.hadoop.hdfs.DistributedFileSystem.initialize (DistributedFileSystem.ystem).155) в org.apache.hadoop.fs.FileSystem.createFileSystem (FileSystem.java:2800) в org.apache.hadoop.fs.FileSystem.access $ 200 (FileSystem.java:98) в org.apache.hadoop.fs.FileSystem $ Cache.getInternal (FileSystem.java:2837) в org.apache.hadoop.fs.FileSystem $ Cache.get (FileSystem.java:2819) в org.apache.hadoop.fs.FileSystem.get (FileSystem.java:387) в org.apache.hadoop.fs.Path.getFileSystem (Path.java: 296) в org.apache.hadoop.mapreduce.security.TokenCache.obtainTokensForNamenodesInternal (TokenCache.java:97) в org.apache.hadoop.mapreduce.security.TokenCache.obtainTokensForNamenodes (Tokenapache.g.hadoop.mapred.FileInputFormat.listStatus (FileInputFormat.java:206) на org.apache.hadoop.hive.ql.io.avro.AvroContainerInputFormat.listStatus (AvroContainerInputFormat.java:42) на org.apache.hadoopInputgetSplits (FileInputFormat.java:315) в org.apache.spark.rdd.HadoopRDD.getPartitions (HadoopRDD.scala: 202) в org.apache.spark.rdd.RDD $$ anonfun $ разделов $ 2.apply (RDD.scala:239) в org.apache.spark.rdd.RDD $$ anonfun $ partitions $ 2.apply (RDD.scala: 237) в scala.Option.getOrElse (Option.scala: 120) в org.apache.spark.rdd.RDD.partitions (RDD.scala: 237) в org.apache.spark.rdd.MapPartitionsRDD.getPartitions (MapPartitionsRDD.scala: 35) в org.apache.spark.rdd.RDD $$ anonfun $ partitions $ 2.apply (RDD.scala: 239)

...