HIVE(1)-概述
1.什么是HIVE: 架在hadoop上的一个软件.
2.用来干什么的:操作MapReduce的。操作MapReduce得java写程序,太费劲,用这个类SQL的工具简单。
3.数据库,数据仓库啥区别:
数据仓库,大,无索引,分片查询。
| 数据库 | 数据仓库 | ||
|---|---|---|---|
| 只存放当前值,实时值 | 静态历史的数据 | ||
| 存放3.5个月 | 定期的,几年或者更长的 | ||
| 数据结构复杂 | 数据结构简单 | ||
| 访问频率高 | 访问频率低 | ||
| 业务人员 | 公司高层 | ||
4.HQL,SQL啥区别:
| HQL | SQL | ||
|---|---|---|---|
| 数据存储位置 | HDFS | ||
| 数据格式 | 用户定义 | ||
| 数据更新 | 不支持单条更新 | 支持 | |
| 索引 | 无 | 有 | |
| 执行延迟 | 高 | 低 | |
| 可扩展性 | 高 | 低 | |
| 数据规模 | 大 | 小 | |
| 执行 | mapreduce | Executor | |
5.HIVE:三种表分类
| 内部表 | 创建目录,目录下存储这份数据,删除表时,数据也会被删除的。很少用。 | ||
| 外部表 | create external table t2() | 创建目录,删除表,不会删除hdfs上的原始数据 | |
| 分区表 | create table logs( ts int,line string) | hive中无索引。全表扫描不经济,所以创建分区。针对目录及的分区。避免全表扫描,直接进子目录。 |
6.HIVE:数据类型
下面是与SQL不一样的
7. 使用
| 语法 | 与sql区别 | ||
|---|---|---|---|
| 1.建表(直接创建) | create table t_movie( movie_name STRING, actors ARRAY<string>, first_date) ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' COLLECTION ITEMS TERMINATED BY '_' MAP KEYS TERMINATED BY ':' | 1.大小写也是不敏感的 2.分割符 | |
| 建表(查询建表法) | Create table t2 as select id,name from t1 ; | 复制表结构+数据 | |
| 建表(like法) | create table t3 like t2 ; | 复制表结构,无数据 | |
| 2.修改(表名) | alter table old_name rename to new_name; | ||
| 修改(列名) | alter table name change column_name new_name new_type; | ||
| 增加(列) | alter table emp add columns(age int); | ||
| 3.删除(表) | drop table (if exists ) table_name()purge; drop table if exists t4; | ||
| 4.插入(本地导入到HIVE) | load data local inpath '/home/hadoop/haha.txt' into table t1; | ||
| 插入(hdfs导入到HIVE) | load data inpath'/test' into table t5; | ||
| 5.导出(保存到本地) | insert overwrite local directory '/home/hadoop/' select * from t1; | ||
| 导出(保存到hdfs) | insert overwrite directory '/abc' select * from t1; |

浙公网安备 33010602011771号