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的值
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
启动方式,(假如是在hadoop-001上):
启动为前台:bin/hiveserver2
在另一个相同主机的终端 :netstat -nlp|grep 10000
通过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’;