启动hive 后,查询 show databases; 报错如下: 这个异常信息的原因是: Hive的metadata服务未开启导致的。
解决办法:
进入到Hive的bin目录下,键入命令:
./hive --service metastore &hive的metastore是干嘛的?作用是什么?
Metastore作用:
客户端连接metastore服务,metastore再去连接MySQL数据库来存取元数据。有了metastore服务,就可以有多个客户端同时连接,而且这些客户端不需要知道MySQL数据库的用户名和密码,只需要连接metastore 服务即可。
metastore的两种方式
配置metastore服务端以及metastore数据库主要有内嵌、远程两种方式。
1. 内嵌方式 hive使用derby作为内嵌的metastore数据库,主要用于测试,但是在同一时间,它只允许一个进程连接metastore数据库。 注意确认数据库能被执行查询的机器访问到,jdbc库放到hive客户端的classpath下。
2. 远程方式 远程metastore服务端和客户端之间使用Thrift协议通信。执行hive --service metastore 启动Thrift服务端。 (所以在初始化之后没有启动Thrift服务端,直接执行SQL语句就会报错)
如果使用mysql,需要在启动hive客户端和HiveMetastore服务端之前把jar包放到HIVE_HOME/lib目录。 远程metastore服务端和客户端都需要设置hive.metastore.warehouse.dir参数为HDFS路径,此外服务端需要设置ConnectionURL等参数,客户端需要设置hive.metastore.uris参数。
1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,会注明原创字样,如未注明都非原创,如有侵权请联系删除!;3.作者投稿可能会经我们编辑修改或补充;4.本站不提供任何储存功能只提供收集或者投稿人的网盘链接。 |