hive 用mysql存储元信息

http://www.tech126.com/hive-mysql-metastore/

Hive默认是采用Derby来存储其Meta信息的,如下:

<property>

<name>javax.jdo.OPTION.ConnectionURL</name>

<value>jdbc:derby://zw-hadoop-master:1527/metastore_db;create=true</value>

<description>JDBCconnectstringFORaJDBCmetastore</description>

</property>

<property>

<name>javax.jdo.OPTION.ConnectionDriverName</name>

<value>org.apache.derby.jdbc.ClientDriver</value>

<description>DriverclassnameFORaJDBCmetastore</description>

</property>

我们可以修改一下配置,让Mysql来存储其Meta信息

首先,在Mysql服务器上建立相应的库,并赋权限

create database hivedb;

grant all privileges on hivedb.* to hiveuser@'%' identified by 'hiveuser';

grant all privileges on hivedb.* to hiveuser@'localhost' identified by 'hiveuser';

然后,把mysql-connector-java-5.1.12-bin.jar拷贝到/cq/hive/lib下  //注意这里要从mysql官网下connector的包,不然可能出错

再修改hive-default.xml配置

<property>

<name>javax.jdo.OPTION.ConnectionURL</name>

<value>jdbc:mysql://192.168.95.25:3306/hivedb?createDatabaseIfNotExist=true</value>

<description>JDBCconnectstringFORaJDBCmetastore</description>

</property>

<property>

<name>javax.jdo.OPTION.ConnectionDriverName</name>

<value>com.mysql.jdbc.Driver</value>

<description>DriverclassnameFORaJDBCmetastore</description>

</property>

<property>

<name>javax.jdo.OPTION.ConnectionUserName</name>

<value>hiveuser</value>

<description>usernameTOUSEagainstmetastoredatabase</description>

</property>

<property>

<name>javax.jdo.OPTION.ConnectionPassword</name>

<value>hiveuser</value>

<description>passwordTOUSEagainstmetastoredatabase</description>

</property>

相关推荐