数据分区的一般概念存在已久。其可以有多种形式,但是通常使用分区来水平分散压力,将数据从物理上转移到和使用最频繁的用户更近的地方,以及实现其他目的。

Hive中有分区表的概念。我们可以看到分区表具有重要的性能优势,而且分区表还可以将数据以一种符合逻辑的方式进行组织,比如分层存储。

来看看这张分区表:

CREATE TABLE ods.ods_login(`uuid` string,`event` string,`time` string)partitioned by (dt string)

分区表改变了 Hive对数据存储的组织方式。如果我们是在ods库中创建的这个 表,那么对于这个表只会有一个ods_login目录与之对应:

hdfs://hadooopcluster/user/hive/warehouse/ods.db/ods_login

如果我们加一个分区

ALTER TABLE ods.ods_login add PARTITION (dt='2020-03-01');

那么存储路径会发生这样的变化

hdfs://hadoopcluster/user/hive/warehouse/ods.db/ods_login/dt=2020-03-01/

是的,分区名就是实际的目录名称。表下将会包含有零个文件或者多个文件,这些文件中存放着那些你新增的分区名称。

分区字段(这个例子中就是dt) 一旦创建好,表现得就和普通的字段一样。 事实上,除非需要优化查询性能,否则使用这些表的用户不需要关心这些“字段”是否是分区字段。

例如,下面这个查询语句将会查找出用户在2020-03-01的所有行为数据:

SELECT * FROM ods.ods_loginWHERE dt='2020-03-01'

需要注意的是,分区使这张表拥有了额外的一个时间字段,所以实际数据中可以省略类似含义的字段,避免冗余了。

对数据进行分区,最重要的原因就是为了更快地查询。在前面那个将结果范围限制在'2020-03-01'这一天的查询中,仅仅需要扫描一个目录下的内容即可。即使我们可能有好几百个目录,除了这一个目录其他的都可以忽略不计。对于非常大的数据集,分区可以显著地提高查询性能。

当我们在WHERE子句中增加谓词来按照分区值进行过滤时,这些谓词被称为分区过滤器。

为了避免查询的数据量太大,一个高度建议的安全措施就是将Hive 设置为“strict(严格)”模式,这样如果对分区表进行查询而WHERE子句没有加分区过滤的话,将会禁止提交这个任务。

用户也可以按照下面的语句将属性值设置为

hive> set hive.mapred.mode=strict;hive> SELECT * FROM ods.ods_login LIMIT 100;FAILED: Error in semantic analysis: No partition predicate found forAlias nen Table "ods.ods_login"

如果设置为nonstrict;则可以正常查询

hive> set hive.mapred.mode=nonstrict;hive> SELECT * FROM ods.ods_login LIMIT 100;aaa bbb ccc 2020-03-01

同时,可以通过SHOW PARTITIONS命令查看表中存在的所有分区:

hive> SHOW PARTITIONS ods.ods_logindt=2020-03-01

参考资料:

1.《Hive编程指南》

2. Hive官方wiki:

https://cwiki.apache.org/confluence/display/HIVE


>>  想学大数据?点击找老蒙!<<智能人工推荐:

从面试官的角度谈谈大数据面试  

你是否能被轻易地取代?

>>  点击查看更多觉得有价值请关注▼

字段 新增hive_Hive分区表 | 每日五分钟学大数据相关推荐

  1. hive load data inpath 空目录_Hive内部表 | 每日五分钟学大数据

    上一篇说的是外部表,当把EXTERNAL关键字去掉的时候就是内部表了.为什么叫内部表,因为这种表,Hive会(或多或少地)控制着数据的生命周期. 如果你熟悉Hive那你一定知道,Hive默认情况下会将 ...

  2. 五分钟学GIS | 倾斜摄影单体化技术

    第二期的"五分钟学GIS | 倾斜摄影技术"专题之后,相信大家对倾斜摄影技术已经有了一个初步的认识,本期我们将深入讲解倾斜摄影单体化技术. 单体化技术的来源 在第二期专题中我们了解 ...

  3. 启程 - 《每日五分钟搞定大数据》

    <每日五分钟搞定大数据>原创系列,每周不定期更新.欢迎关注公众号:大叔据   想了很久,准备开始写一系列的文章,记录这些年来的所得所想,感觉内容比较多不知从哪里开始,画了个思维导图确定了大 ...

  4. 五分钟学会python_关于五分钟学Python系列视频

    Up主记得我们父母辈考大学的时候,外语,尤其是英语,是一个非常火爆的专业.那个时候会英语的人相对比较少,因此能掌握流利的英文听说读写的学生可以算是稀缺人才.现在虽然英语专业人才仍然有很大市场,但是整体 ...

  5. 五分钟学GIS | BIM与三维GIS的融合

    今天五分钟学GIS的时间我们来学习BIM与三维GIS的融合. 什么是BIM? BIM:建筑信息模型(Building Information Modeling)或者建筑信息管理(Building In ...

  6. 「每日五分钟,玩转JVM」:JVM简介

    聊聊JVM JVM,一个熟悉又陌生的名词,从认识Java的第一天起,我们就会听到这个名字,在参加工作的前一两年,面试的时候还会经常被问到JDK,JRE,JVM这三者的区别. JVM可以说和我们是老朋友 ...

  7. 五分钟学GIS | GIS服务器集群技术

    今天五分钟学GIS的时间我们来学习GIS集群技术. 什么是GIS服务器集群 GIS服务器集群,是指将多个GIS服务器成群组,当有用户请求到达集群服务器时,集群服务器的父节点统一对GIS服务进行调配,使 ...

  8. 多层数组如何遍历_带你从零学大数据系列之Java篇---第五章:数组

    温馨提示:如果想学扎实,一定要从头开始看凯哥的一系列文章(凯哥带你从零学大数据系列),千万不要从中间的某个部分开始看,知识前后是有很大关联,否则学习效果会打折扣. 系列文章第一篇是拥抱大数据:凯哥带你 ...

  9. 读《从0开始学大数据》-- 学习笔记和感想随笔(一)

    主要记录阅读<从0开始学大数据>课程的学习笔记.课程系统性的介绍大数据的发展史.大数据系统的原理及架构.大数据生态体系中的主要产品.如何进行呢大数据开发实践.大数据平台开发及系统集成.使用 ...

最新文章

  1. 屠榜多目标跟踪!华科amp;港大提出ByteTrack:基于数据关联方法BYTE的跟踪器
  2. C语言配置文件解析库——iniparser
  3. python中变量的作用域有几种_Python中变量的作用域(variable scope)
  4. java web 开发技术大全 代码_Java Web开发技术大全
  5. r语言 fread函数参数_R语言 第4章 初级绘图(6)
  6. 服务器新手装备无限拿指令,【新手指南】服务器指令大全
  7. 诗与远方:无题(七十一)- 雨季来了
  8. QT5开发及实例学习之十八显示Qt5 SVG格式图片
  9. 开启和关闭oracle数据库中的审计功能
  10. 【软件工程导论】可行性研究
  11. rs232 linux驱动程序,rs232驱动,USB-RS232驱动程序安装说明
  12. 国家社科基金项目清单、申报书填写指南和课题申报书模板
  13. 数独解题程序的python实现_使用Python编写程序求解数独游戏答案
  14. java中POJO类为什么要实现序列化
  15. 多重选定怎么撤销_怎样取消电脑多重网络 - 卡饭网
  16. 通过英文剧集、电影学单词的小工具
  17. 「hdu6608」Fansblog 威尔逊定理
  18. ARM汇编之MOV指令
  19. SplitSR: An End-to-End Approach to Super-Resolution on Mobile Devices
  20. 碰撞检测中的K_DOPS算法的研究

热门文章

  1. spring mvc学习(15)Referenced file contains errors
  2. php什么设置前端代码,代码编辑器与PHPSTUDY的安装与配置过程(前端第一课)
  3. GIT提交的时候出现 ! [rejected] master -> master (non-fast-forward)错误
  4. CSS之Responsive设计的关键三步
  5. 中boxplot函数的参数设置_如何在Python中生成图形和图表
  6. pycharm的安装
  7. vue之watch用法
  8. SQL Server2014 SP2新增的数据库克隆功能
  9. 指针选择排序法,10个整数从小到大排序
  10. Java的堆与栈,科普给大家