HIVE小结 HIVE基本语法,大数据基础知识理解

HIVE和Mysql十分类似
建表规则

1,CREATE TABLE 创建一个指定名字的表。如果相同名字的表已经存在,则抛出异常;用户可以用 IF NOT EXIST 选项来忽略这个异常

2,EXTERNAL 关键字可以让用户创建一个外部表,在建表的同时指定一个指向实际数据的路径(LOCATION)

3.LIKE 允许用户复制现有的表结构,但是不复制数据

4.COMMENT可以为表与字段增加描述

创建表
hive> CREATE TABLE IF NOT EXISTS test1
> (id INT,name STRING);

删除表
drop table test1;
查看表结构
desc test1;
修改表名
alter table test1 rename to test2;
修改表结构
alter table test1 add columns(address string ,grade string);
创建和已知表相同结构的表
create table test3 like test1;

加载本地数据
load date local inpath '/home/date/' into table test1;
注意可以在into 前面添加overwrite表示覆盖之前在test1的数据,如果没有就表示加载本地数据在原始数据的后面
加载hdfs的文件
首先将文件上传到hdfs文件系统对对应的目录上
hadoop fs -put /home/.txt /usr/
然后加载hdfs中的数据
load data inpath /usr/ into table test1;

插入数据
insert overwrite table test2 select * from test1;
查询数据
和mysql语法上没甚没区别

查询单个字段的数据

where条件查询

all和distinct

limit限制查询

group by

order by

sort bu

distribute by

cluster by

HIVE分区

hive分区是为了更方便数据管理,常见的有时间分区和业分区

需要注意的是分区字段不能和表中的字段重复,否则就会报错:

我们在加载数据的时候也可以分区加载

之后我们再将同一份数据加载到不同的分区中

查询一下数据 select * from t1;

创建分区除了在创建表的时候启动partition by实现,还可以
alter table t1 add partition (pt_d string)
这样就创建了一个分区,这时会看到hive在hdfs中创建了相应的文件夹

查询相应的分区的数据

添加分区,增加一个分区文件

删除分区(删除对应的分区文件)
注意,对于外表进行drop partition并不会删除hdfs上的文件,并且通过msck repair table table_name同步回hdfs上的分区。

内部表和外部表的区别

Hive中表与外部表的区别:
1、在导入数据到外部表,数据并没有移动到自己的数据仓库目录下,也就是说外部表中的数据并不是由它自己来管理的!而表则不一样;
2、在删除表的时候,Hive将会把属于表的元数据和数据全部删掉;而删除外部表的时候,Hive仅仅删除外部表的元数据,数据是不会删除的!
那么,应该如何选择使用哪种表呢?在大多数情况没有太多的区别,因此选择只是个人喜好的问题。但是作为一个经验,如果所有处理都需要由Hive完成,那么你应该创建表,否则使用外部表!

原文:

觉得文章不错也想从事IT的朋友可关注我,微信公众号:程序员理想