配置Hive使用MySql存储元数据

配置Hive使用MySql存储元数据
2018-7-24 作者: 张子阳 分类: 大数据处理

默认情况下,Hive会使用Derby来存储元数据(主要是表、列、分区Partition的信息)。Derby是一个嵌入式的本地数据库,只能单进程进行访问,不允许多个连接。因此,Derby只适合本地测试,不适合用在生产环境。Hive支持使用单独的数据库来存储元数据,比如MySql、PostgreSql等,本文将介绍如何配置Hive使用MySql存储元数据。

本文假设你已经单机安装、配置好了MySql和Hive。如果没有,可以参考下面两篇文章:

使用Docker安装和配置MySql
Linux上安装和配置Hive
安装MySql连接器
前往:https://dev.mysql.com/downloads/connector/j/5.1.html,下载MySql连接器(connector)。

解压后,将mysql-connector-java-5.1.xx.jar,上传到Linux的 $HIVE_HOME/lib 文件夹下。

配置hive-site.xml
hive-site.xml用于配置Hive的各个参数,位于$HIVE_HOME/conf文件夹下。默认情况下,并没有这个文件,所有的参数配置在hive-default.xml.template中。因此,第一次使用时,需要手动创建这个文件。假设你的mysql位于192.168.1.56:3306,则像下面这样配置:

javax.jdo.option.ConnectionURL jdbc:mysql://192.168.1.56:3306/hive_metastore?createDatabaseIfNotExist=true&useSSL=false metadata is stored in a MySQL server javax.jdo.option.ConnectionDriverName com.mysql.jdbc.Driver MySQL JDBC driver class javax.jdo.option.ConnectionUserName username mysql server connection username javax.jdo.option.ConnectionPassword password mysql server connection user password 根据上面的配置,会创建一个叫做hive_metasotre的数据库(也可以在hive-site.xml中将其修改为其他名字)。

注意上面useSSL前面的&,必须要转义成:&,如果根据习惯直接写&则会报错。

异常解决
配置完成后,在shell命令行启动Hive,然后执行一下show databases;。此时,可能会遇到一个异常:MetaException(message:Version information not found in metastore.)

这个时候,可以登录到mysql,删除掉hive_metastore数据库,然后执行一下下面的命令,重新初始化一下元数据库:

schematool --dbType mysql --initSchema

接下来,再次启动hive控制台,重新执行 show databases;,如果成果,则说明一切正常了。

hive> show databases; OK default tglog_aw_2018 Time taken: 0.052 seconds, Fetched: 2 row(s)

至此,便完成了使用MySql来存储Hive元数据的配置。

感谢阅读,希望这篇文章能给你带来帮助!

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值