我的 Hive 版本是 1.1.0 而 spark 是 1.6.0 连接没有问题。我能够使连接成功。
在导入数据或使用 hive 连接创建数据链接时连接后,我可以看到数据库名称和表属于它,但在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 at org.apache.hadoop.security.SecurityUtil.buildTokenService(SecurityUtil.java:406) at org.apache.hadoop.hdfs.NameNodeProxies.createNonHAProxy(NameNodeProxies.java :310) at org.apache.hadoop.hdfs.NameNodeProxies.createProxy(NameNodeProxies.java:176) at org.apache.hadoop.hdfs.DFSClient.(DFSClient.java:728) at org.apache.hadoop.hdfs.DFSClient .(DFSClient.java:671) 在 org.apache.hadoop.hdfs.DistributedFileSystem.initialize(DistributedFileSystem.java: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) at org.apache.hadoop.fs.FileSystem.get(FileSystem.java:387) at 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(TokenCache.java:80) 在 org.apache.hadoop.mapred .FileInputFormat.listStatus(FileInputFormat.java:206) at org.apache.hadoop.hive.ql.io.avro.AvroContainerInputFormat.listStatus(AvroContainerInputFormat.java:42) at org.apache.hadoop.mapred.FileInputFormat.getSplits(FileInputFormat .java:315) 在 org.apache.spark.rdd.HadoopRDD.getPartitions(HadoopRDD.scala:202) 在 org.apache.spark.rdd.RDD$$anonfun$partitions$2.apply(RDD.scala:239) 在组织。apache.spark.rdd.RDD$$anonfun$partitions$2.apply(RDD.scala:237) at scala.Option.getOrElse(Option.scala:120) at 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)