HIVE与mysql整合

HIVE的 配置

问题一:

为什么不同的会话hive显示数据不一致?Hive默认使用derby存储元数据;

session01: /home/hadoop/bigdatasoftware/apache-hive-1.2.1-bin/bin 生成metastore_db
session02: /home/hadoop 生成metastore_db

问题二:

元数据hive默认是什么方式存储?
derby:基于文件的内存数据

问题三:

derby的文件存储在那里?
它是存储到metastore_db目录下的,此目录产生的路径是输入hive指令的当前目录决定

解决方案:

1、使用mysql替换derby

​ 安装mysql




1、检查数据库是否存在
	rpm -qa|grep mysql
	
2、如果存在mysql,进入root用户,依次卸载
	yum -y remove mysql-community-server-5.7.23-1.el6.x86_64
	yum -y remove mysql-community-libs-5.7.23-1.el6.x86_64
	yum -y remove mysql-community-common-5.7.23-1.el6.x86_64
	yum -y remove mysql-community-client-5.7.23-1.el6.x86_64
	
	find / -name mysql
	rm -rf /var/lib/mysql
	rm -rf /var/lib/mysql/mysql
	rm -rf /usr/share/mysql


3、解压依次安装
	tar -xvf mysql-5.7.23-1.el6.x86_64.rpm-bundle.tar
	 #解压
	sudo rpm -ivh mysql-community-common-5.7.23-1.el6.x86_64.rpm
	sudo rpm -ivh mysql-community-libs-5.7.23-1.el6.x86_64.rpm
	sudo rpm -ivh mysql-community-client-5.7.23-1.el6.x86_64.rpm
	sudo rpm -ivh mysql-community-server-5.7.23-1.el6.x86_64.rpm
4、启动服务
	sudo service mysqld start #启动mysqld服务

5、修改配置文件无密码登录
	sudo vi /etc/my.cnf
	在最尾部加上
		skip-grant-tables
		保存
6、重启mysql服务
	sudo service mysqld restart

7、修改密码,mysql5.7用此语法

	use mysql;

	update mysql.user set authentication_string=password('1111') where user='root';

	flush privileges;

8、回到第二步骤去掉加上的
	skip-grant-tables

9、以root用户登录
	use mysql;
	select 'host' from user where user='root';
	update user set host = '%' where user ='root';
	flush privileges;


	ALTER USER USER() IDENTIFIED BY '1111';


10、mysql开启远程访问权限
use mysql;
update user set host = '%' where user = 'root'; 
FLUSH PRIVILEGES 	

mysql -uroot -p可以进行登陆

hive如何与mysql整合?

​ 将mysql引擎放到hive的lib
cp -a mysql-connector-java-5.1.35.jar bigdatasoftware/apache-hive-1.2.1-bin/lib/

1、配置hive-env.sh文件,添加HADOOP_HOME路径

cd ~/bigdatasoftware/apache-hive-1.2.1-bin/conf/

cp hive-env.sh.templatehive-env.sh

vi hive-env.sh

然后改变HADOOP_HOME的值

HIVE与mysql整合
2、vi hive-site.xml


<configuration>
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://hadoop0:3306/hive?createDatabaseIfNotExist=true</value>
<description>JDBC connect string for a JDBC metastore</description>
</property>
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
<description>Driver class name for a JDBC metastore</description>
</property>

<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>root</value>
<description>username to use against metastore database</description>
</property>

<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>123456</value>
<description>password to use against metastore database</description>
</property>
</configuration>

2、如何远程访问hive

HIVE与mysql整合

启动方式,(假如是在hadoop-001上):

​ 启动为前台:bin/hiveserver2

​ 在另一个相同主机的终端 :netstat -nlp|grep 10000

HIVE与mysql整合

通过beeline工具实现连接
方式一:
​ !connect jdbc:hive2://hadoop0:10000

方式二:
​ bin/beeline -u jdbc:hive2://hadoop0:10000 -n hadoop

hive的基础用法

如何创建表
如何添加数据?
1、insert into xxxx操作 (每次都生成一个mr程序)
2、将结构化文件映射到数据表(hive的作用)

​ 要使用格式创建表:

create table t_user_inf(id int,user_name string,age int);

create table t_user_inf(id int,user_name string,age int)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ‘,’
LINES TERMINATED BY ‘\n’;