0


sparkSQL连接hive失败案例和解决办法

1.开始我就是按照网上的办法连接hive,但一直出现问题,现将我失败的场景和大家看一下,以及遇到同样的问题解决的办法,防止大家以后踩坑

2.首先如果是遇到这个问题就是hive的hive-site.xml的配置出现了问题,缺少元数据的一个配置,我最先开始是遇到的这个问题,解决办法如下

Unable to instantiate org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient;

<property>
   <name>hive.metastore.uris</name>
   <value>thrift://自己机器的IP:9083</value>
</property>

如果是上述的问题是hive元数据没有配置uri地址,导致连接hive找到,加上以上配置问题就可以解决

3,如果遇到下面的问题,就是pom的依赖出现了问题,首先给大家说一个点,我们配置依赖一定要配置我们需要的依赖,对于我们不要的依赖最好不要加上,要不然就会导致依赖冲突,我遇到的第2个问题就是这个问题,出现的报错就是下面标红的,而出现的问题就是我加入了hbase的依赖导致连接hive出现了问题,我看到网上有说可以把这个依赖放在最后可以解决,但如果一定要加上可以新开一个文件,单独配置一个依赖,这个只是我的方法,我这个依赖没有用上我直接删除了问题就能解决,如果大家看到这个问题一定要注意你的pom文件的依赖问题

java.lang.NoClassDefFoundError: org/apache/hadoop/tracing/SpanReceiverHost

<dependency>

<groupId>org.apache.hbase</groupId>

<artifactId>hbase-client</artifactId>

<version>2.4.2</version>

</dependency>

4,如果前面的2个问题没有出现,后面就是连接hive的常规操作了,将hive-site.xml文件复制粘贴到resource目录下,然后就是直接写Scala代码就好了,我的代码如下

def main(args: Array[String]): Unit = {
//    System.setProperty("HADOOP_USER_NAME","root");
    Logger.getLogger("org.apache.spark").setLevel(Level.ERROR)
    Logger.getLogger("org.eclipse.jetty.server").setLevel(Level.OFF)
    //创建 SparkSession
    val spark: SparkSession = SparkSession
      .builder()
      .enableHiveSupport()
      .master("local[*]")
      .appName("sql")
      .getOrCreate()
    spark.sql("show databases").show()
    spark.close()
//    spark.sql("show databases").show()
    //result.printSchema()
  }

如果这些操作都完成了,连接hive是肯定有的,我的操作是上面的代码,main函数的那个logger出现是为了减少spark的运行日志,方便查看结果,运行结果如下:

最后在总结一遍,对于spark连接hive,一定不能错一步,错就会导致报错,还有就是hive的hive-site.xml一定要配置元数据的uri,没有这个一定连接不上,还有就是在pom文件对于没用的依赖最好不要加上,对于hbase的依赖最好不要出现如果加上了依赖我在运行一定失败,你们的可能也会失败,其它的就是hadoop集群和hive的元数据的服务一定要开启,目前我就是这些都做好了才能成功,如果大家还遇到别的问题不是我上面的欢迎大家留言,我能解决的一定帮助解决

标签: hive hadoop 大数据

本文转载自: https://blog.csdn.net/qq_46183404/article/details/127177666
版权归原作者 平凡天下 所有, 如有侵权,请联系我们删除。

“sparkSQL连接hive失败案例和解决办法”的评论:

还没有评论