栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

[hive] 和数据库的比较 | 内部表和外部表 |distribute by cluster by partition by|order by sort by区别| 系统函数 | 窗口函数

[hive] 和数据库的比较 | 内部表和外部表 |distribute by cluster by partition by|order by sort by区别| 系统函数 | 窗口函数

1.和数据库的比较

hive和数据库除了拥有类似的查询语言,再无类似之处。

1)数据的存储位置

hive存储在HDFS,数据库将数据保存在块设备或者本地文件系统中。

2)数据更新

hive中不建议对数据的修改(开启事务可以做到),而数据库中的数据通常是需要经常修改的。

3)执行延迟

hive执行延迟较高,数据库的延迟较低。但这是有条件的,即数据规模较小。当数据规模大到超过数据库的处理能力时,hive的并行计算显然能体现出优势。

4)数据规模

hive支持大规模的数据计算,数据库可以支持的数据规模较小。

2.内部表和外部表

1)内部表(管理表)

默认创建的表都是内部表,在创建内部表时,hive会将数据移动到配置项

hive.metastore.warehouse.dir所配置的路径,例如/user/hive/warehouse所定义的目录的子目录下,当我们删除一个管理表时,会删除表的元数据和数据。

2)外部表

用external修饰的表都是外部表,因为是外部表,所以hive并不认为其拥有这份数据,删除该表并不会删除掉这份数据,但是会删除元数据。可以用location指定数据存放位置。

一般生产中ods层和ads层(开始和结束)用外部表,中间都是用内部表。

3.distribute by  cluster by partition by区别

1)distribute by

a)distribute by按照指定的列进行分区,分区个数为设置的reduce task个数

b)结合sort by使用

注:distribute by要写在sort by之前,即:先分区,再在在分区内进行排序。

注:要确保reduce task>2,不然默认只有一个分区,看不出效果。

c)distribute by a sort by b

按照a列进行分区,分区个数为设置的reduce个数。

再在分区内按照b列进行排序。

2)cluster by

a)当distribute by和sort by相同字段时,等价于cluster by

b)但是cluster by只能生序排序,不可以和asc、desc连用

c)以下两种写法等价

select * from emp cluster by deptno;

select * from emp distribute by deptno order by deptno;

3)partition by

在over开窗函数中使用,对数据进行分组

4.order by sort by区别

1)order by

全局排序,asc升序,desc降序

2)sort by

在每个reduce内有序,对全局不是有序的

4.系统函数 5.窗口函数 6.自定义UDF、UDTF
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/780522.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号