前提假设本地已经安装好,hadoop、hive、MySql。目前hadoop、hive我是安装在本地机器的Linux虚拟机上。MySql安装在本地机器上(win7)。
1、在Hive的conf目录下的文件“hive-site.xml”中增加如下配置:
hive.metastore.local
true
javax.jdo.option.ConnectionURL
jdbc:mysql://数据库IP地址:3306/hive?characterEncoding=UTF-8
javax.jdo.option.ConnectionDriverName
com.mysql.jdbc.Driver
javax.jdo.option.ConnectionUserName
数据库用户名
javax.jdo.option.ConnectionPassword
数据库密码
2、将mysql的驱动包(mysql-connector-java-5.1.28.jar)放在hive安装目录Lib下(/usr/local/soft/hive/hive-0.14.0/lib)
此时就应该配置好了。但是在运行期间可能会报错:Host '****' is not allowed to connect to this MySQL server
这个表示你的MySql帐号不允许从远程登陆,也就是不允许从虚拟机连接到MySql上。
解决方式:登录本地MySql数据库:其中有一个mysql的database(数据库默认的),先查看一下user表的数据,如图:
在上图的Hosts列提示:只允许本地IP访问这个数据库
此时user表中增加一条数据即可,数据中的Host列是需要访问这个mysql的IP(即虚拟机的IP)。
增加数据后需要执行:flush privileges;(将一些Mysql配置重新加载到内存中,不用重新数据库了)即可。
sql如下:
insert into `User`
select '192.168.80.100',User,Password,Select_priv,Insert_priv,
Update_priv,Delete_priv,Create_priv,Drop_priv,Reload_priv,Shutdown_priv,
Process_priv,File_priv,Grant_priv,References_priv,Index_priv,Alter_priv,
Show_db_priv,Super_priv,Create_tmp_table_priv,Lock_tables_priv,Execute_priv,
Repl_slave_priv,Repl_client_priv,Create_view_priv,Show_view_priv,
Create_routine_priv,Alter_routine_priv,Create_user_priv,Event_priv,
Trigger_priv,Create_tablespace_priv,ssl_type,ssl_cipher,x509_issuer,
x509_subject,max_questions,max_updates,max_connections,
max_user_connections,plugin,authentication_string,password_expired
from user where host='localhost'
3、安装好了,测试是否成功
1) 在hive命令行创建一个表 create table hive_mysql (id int,name string);
2)在插入一些数据 insert into table hive_mysql values(1,'aaa');
3)此时会发现mysql的hive数据库中会增加一些表。如 表:columns_v2描述了一些 id 和name类型的一个表。
此时说明安装成功
如果在建表是出现:Specified key was too long; max key length is 767 bytes
执行 alter database hive character set latin1; 即可