走进hive数据库(数据仓库工具)
hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的sql查询功能,
可以将sql语句转换为MapReduce任务进行运行,优点是学习成本低,可以通过类sql语句快速实现简单的MapReduce统计,
不必开发专门的MapReduce应用,十分适合数据仓库的统计分析;
注意:Hive其实就是对Hdfs和MapReduce的封装,能够储存海量的数据,传统的数据库无法存储海量的数据
hive数据库的安装
安装之前首先要有mysql;
- 上传jar包 借用别人的包
链接:https://pan.baidu.com/s/1c70FsQ9rO3dj_H23mVmUlw 密码:9umr - 解压jar包
tar -zxvf hive-1.2.1.tar.gz
- 配置hive的环境变量
vi /etc/profile
配置自己的目录
- 首先切换到自己解压的目录
cd /opt/software/hive-1.2.1/conf
- 复制两个文件
cp hive-default.xml.template hive-size.xml
cp hive-env.sh.template hive-env.sh
- 编辑hive-env.sh的文件 Hadoop改成绝对路径
- 编辑hive-size,xml的文件
光标移动位置输入命令.,$-1d
删除下面所有的数据
复制以下配置
<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>root</value>
<description>password to use against metastore database</description>
</property>
</configuration>
- 安装hive和mysql完成后,将mysql的连接jar包拷贝到$HIVE_HOME/lib目录下
9. 如果出现没有权限的问题,在mysql授权(在安装mysql的机器上执行)
mysql
10. 设置密码
set password=password('root');
11. #(执行下面的语句 .:所有库下的所有表 %:任何IP地址或主机都可以连接)
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root' WITH GRANT OPTION;
FLUSH PRIVILEGES;
12. 通过mysql -uroot -proot
看看是否能连接上
13. Jline包版本不一致的问题,需要拷贝hive的lib目录中jline.2.12.jar的jar包替换掉hadoop中的
cp hive/lib/jline-2.12.jar /opt/software/hadoop-2.6.4/share/hadoop/yarn/lib/
装hive和mysq完成后,将mysql的连接jar包拷贝到$HIVE_HOME/lib目录下
14. 启动hive
bin/hive
注意:启动之前先启动hadoop集群,hive依赖于hadoopHdfs
Hive的简单操作命令
-
从本地往表中导入数据
load data local inpath '/root/tes.txt' into table test.usr;
-
从hdfs集群中导入数据
load data inpath 'hdfs://node01:9000/user/tes.txt' into table test.te;
注意这里只能是主机名
Hive的生命周期解析 找出sql语句中的关键字
- 优化 将语句中DDL进行优化,形成数
- 编译 对DDL语句重新编译,形成相应的逻辑计划
- 执行 将逻辑计划转化为物理计划MapReduce 执行
Hive数据库的四大表
内部表create table 表名(字段)
删除表时,元数据与数据都会删除
外部表create external table 表明(字段)
删除表时,元数据会被删除,源数据不会被删除
分区表 这两个表明天详讲
分桶表
Hive元数据的存放位置 -
derby hive内部的数据库 不能多个用户同时访问
-
本地存储
-
存放在外部的数据库
hive表的分隔符
ROW FORMAT DELIMITED
: 行格式分隔
FIELDS TERMINATED BY ’,’
: 字段之间使用空格分隔
COLLECTION ITEMS TERMINATED BY ‘,’
: 集合(就是这的数据)使用逗号分隔
MAP KEYS TERMINATED BY ‘:’
: 键值对使用冒号分隔
LINES TERMINATED BY ‘\t’
: 记录之间使用换行符分隔
hive表的小命令
describe [extended|formatted] 表名 查看表的总信息
create table 表名 like 旧表名 结构一样没有数据
create table 表名 select * from 复制的表名 结构一样和数据也统一
create database 数据库名 创建数据库