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完成,那么你应该创建表,否则使用外部表!

原作者:adragon

原文:

https://www.cnblogs.com/liaozhilong/p/9681450.html

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

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181031A11E0200?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券