hive删除一个分区的数据 hive的分区和分桶有什么却别,分别怎么做?
hive的分区和分桶有什么却别,分别怎么做?
一、1、一个表也可以拥有一个或是多个分区,每个分区以文件夹的形式另修真者的存在表文件夹的目录下。
2、表和字段名不区分大小写字母。
3、分区是以字段的形式在表结构中修真者的存在,按照describetable命令这个可以查看到字段修真者的存在,只不过该字段不贮存实际中的数据内容,并不是分区的意思是。
二、桶是比表或分区无比细颗粒度的数据范围划分。针对某一列并且桶的组织,对列值哈希,接着除以桶的个数求余,确定将该条记录储存时到哪个桶中。好处:
1、完成任务更高的查询处理效率。
2、使抽样更高效稳定。
hadoop任务,给定数据量和处理逻辑(Sql、UDF等),如何预估计算时间与资源?有没有实际案例?
是需要比较明确概念定义:可以计算时间是指计算机不好算执行的时间,不是人耐心的等待的时间,而且在等待时间依赖性太强于有多少资源也可以调度。
简单的方法我们不考虑到资源问题,讨论到时间的预估。执行时间依赖于执行引擎是Spark我还是MapReduce。
Spark任务Spark任务的总执行时间这个可以看SparkUI,以下图为例
Spark任务是分多个PhysicalStage执行的,每个stage下有很多个task,task的时间也有大概的预估,如下图
Task个数依赖于Hive表的文件数,每个task的执行时间依赖感于UDF是怎末利用的,需要具体问题具体对待。
MapReduce任务MapReduce任务的执行时间,也不需要参考hadoopwebui
整体执行时间map_time*map_numberreduce_time*reduce_number;
map个数一般情况下是hive表的分区数;
map执行时间取决于它每个分区里的数据量和udf的逻辑;
无论是Spark应该MapReduce,计算时间都依赖于:
数据源分区数每个分区里的文件数每个文件的大小udf逻辑sql逻辑(group by、filter、distinctcount)
实际场景下资源是太远的,我们也不冷淡可以计算时间,反到是更关心一个数据集是需要多久能一次性处理完,诸如一个1T的Hive表至少不需要一个小时跑完MapReduce。这时候我们是需要做实验,仔细观察一个分区差不多必须多久跑完,数据有没有skew,从经验上提出另一个合理的时间,使之可以保证任务未交付。
版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。