有关Hive中hiveServer2和metastore的启动,以及Spark项目中resources中的配置文件添加

因为自己在配置Mysql作为Hive的metastore(元数据库)时,遇到了很多的问题,Mysql和Hive的整合过程网上资源很多,这里我就放一下我的配置文件hive-site.xml,亲测可用:





 
        javax.jdo.option.ConnectionURL
 
 
        javax.jdo.option.ConnectionDriverName
        com.mysql.jdbc.Driver
 
 
        javax.jdo.option.ConnectionUserName
        root
 
 
        javax.jdo.option.ConnectionPassword
        123456
 
 
        hive.metastore.warehouse.dir
        /user/hive/warehouse
 

   datanucleus.autoStartMechanism
   SchemaTable


   hive.metastore.schema.verification
   false


        hive.cli.print.header
        true


        hive.cli.print.current.db
        true


    hive.server2.webui.host
    192.168.177.3
  
  
    hive.server2.webui.port
    10002
  

    hive.server2.thrift.client.user
    root


    hive.server2.thrift.client.password  
    123456


在使用Spark整合Hive的时候,从Spark项目中通过Scala语言访问Hive数据库中的数据库、数据表时总是报错:“Unable to instantiate org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient”,这个错误的原因可能是多个原因导致的,按照排除故障的思路,首先去查看hive的相关服务是否启动:
下图为Hive服务正常启动的效果,如果大家的服务查询界面与此不同,那么就有可能是服务未开启
有关Hive中hiveServer2和metastore的启动,以及Spark项目中resources中的配置文件添加_第1张图片
有关Hive中hiveServer2和metastore的启动,以及Spark项目中resources中的配置文件添加_第2张图片
使用的服务查询命令是

ps -aux | grep 'hive'

此处,我自己也有一个疑问,当时.为了解决这个疑问我自己也花了很多时间,最后也没怎么解决,如果大家有知道的,烦请在评论区告知我一下。
有关Hive中hiveServer2和metastore的启动,以及Spark项目中resources中的配置文件添加_第3张图片
可以看到,我单独查询"hiveserver2"服务的话,界面显示该服务是没有启动的,但实际情况是我己经启动了;类似的"metsstore"服务可以看到我是已经启动的,我自己也很疑惑,望知情人士解答。

假如将Hive相关的所有服务, hiveServer2(hive远程服务,可通过Scala,Java等编程语言访问Hive数据库)、metastore(hive服务端)以及hive(hive命令行服务)都已经启动,就可以在本地的比如IDEA项目中对Hive进行访问了。但是,我在启动的时候又遇到了一个问题,比如我所访问的是test_db数据库,但是通过show databases的Spark SQL语句所能显示的只有default数据库,即会出现访问报错org.apache.spark.sql.catalyst.analysis.NoSuchDatabaseException: Database ‘test_db’ not found;,后来经过多方查找,终于找到了解决方案,
有关Hive中hiveServer2和metastore的启动,以及Spark项目中resources中的配置文件添加_第4张图片
即修改Spark项目下的hive-site.xml文件内容,添加以下代码:

 
        hive.metastore.uris
        thrift://192.168.177.3:9083
    

    
        hive.server2.thrift.client.user
        root
    
    
        hive.server2.thrift.client.password
        123456
    

注意把hive.metastore.uris的属性值中的当然thrift服务中的192.168.177.3 替换成自己的虚拟机地址,当然用户名和密码可以自己设置。

这里我还想说一句就是,在本地的IDEA中开发Spark项目时,要把hive/conf/hive-site.xmlhadoop/etc/hadoop/core-site.xmlhadoop/etc/hadoop/hdfs-site.xml,放入Spark项目中的resources文件夹下面,作为资源文件。
我把自己的文件内容贴出来,希望能对大家有所帮助:
(说明一下,这个hive-site.xml 这与文章开头的hive-site.xml文件内容有所不同,那个是放在虚拟机上的,而这个文件是放在你本地的Spark项目中的。这个文件主要是添加属性hive.metastore.uris及其值)





    
        javax.jdo.option.ConnectionURL
        jdbc:mysql://master:3306/hive?createDatabaseIfNotExist=true&useSSL=false
    

    
        javax.jdo.option.ConnectionDriverName
        com.mysql.jdbc.Driver
    ii

    
        javax.jdo.option.ConnectionUserName
        root
    

    
        javax.jdo.option.ConnectionPassword
        123456
    
    
        hive.metastore.warehouse.dir
        hdfs://192.168.177.3:8020/user/hive/warehouse
    

    
        hive.server2.webui.host
        192.168.177.3
    
    
        hive.server2.webui.port
        10002
    

    
        hive.metastore.uris
        thrift://192.168.177.3:9083
    

    
        hive.server2.thrift.client.user
        root
    
    
        hive.server2.thrift.client.password
        123456
    


hdfs-site.xml





    
        dfs.replication
        1
    

    
        dfs.permissions
        false
    



core-site.xml




    
        fs.defaultFS
        hdfs://192.168.177.3:8020
    

    
        hadoop.tmp.dir
        /usr/local/hadoop/hadoop-2.6.0/app/tmp
    


你可能感兴趣的:(Spark基础学习)