Hive 入门讲解
在开始阅读之前让我们喊出口号:“要想人前显贵,就要人后受罪!”加油嘎嘣儿,加油所有想获得美好未来的你!
学习方法:
1.是什么
2.干什么的
3.原理是什么
4.怎么用
5.如果出现错误有几种,怎么去解决
Hive是什么
Hive 是一个数据仓库,提供SQL语句查询,能够将SQL转化为MapReduce任务运行,减少对MR代码的书写。
Hive能够用来干什么
能够用来对海量数据进行存储,并且对数据进行查询和离线分析(和Mysql相比 Hive不支持对大量数据的增删改,对数据进行计算,然而Mysql是对数据进行大量的增删改查)。
Hive的原理
首先通过用户接口(CUI,WEBUI,JDBC/ODBC)将编写的sql语句传入到Driver,Driver对sql语句进行解释,编译,优化 紧接着对sql语句进行执行,将执行任务发送到Hadoop集群,Hadoop集群对改Mr任务进行处理。
Hive 中对表的操纵
-
查看表的结构:desc tablename;
-
查看标的详细信息: desc extended tablename;
-
查看标的创建信息: show create table tablename;
-
在使用Hive时首先要将符合文件映射要求的文件加载/user/hive/warehouse/tableName.
加载的方式
a. load data local inpath “/root/test.txt” overwrite into table tableName;
b. load data inpath “/root/test.txt” into table tableName;
(local 是虚拟机本地文件,如果不加 local 就是hdfs 文件,将hdfs目录下对应的文件移动至hive仓库目录下,写overwrite就是把以前加载的数据清空再写入数据,反之就是在原来的表中对数据进行追加,并将这些元数据(元数据包括表对应的文件路径,表的列与分区,表的创建时间,文件大小等属性,保存到关系型数据库)
5.修改表的名字:alter table tableName rename to newTableName;
6.修改表的列:alter table tableName change column old new colType;
7.增加列的字段 alter table tableName add columns(col colType…);(hive 中不能减少列,但提供全部替换的方式来达到减少的效果)
8.替换表的字段 alter table tableName replace columns( col colType…)
Hive中对表的分类以及区别
1.内部表
Hive会控制表中的数据的声明周期,当删除一张管理表的时候,同时也会删除表中的数据,内部表中的数据不能够与其他工具共享。
2.外部表
Hive只控制元数据,当删除一张外部表的时候,只会删除元数据,并不会删除真实的数据,外部表的数据可以与其他工具共享。
Hive表中的数据类型
1.简单数据类型:Tinyint,Smalint int Bigint Boolean Float Double String TimesTamp
2.复杂数据类型:STRUCT MAP ARRAY
eg:CREATE TABLE complex
(
id
int,
name
string,
age
int,
favorite
array,
girl
map<string,string>,
address
structprovince:string,city:string,country:string)…