logindate,
count
(
*
) as cnt
from tb_login
where logindate = '2021-03-24'
group by logindate;
2.1.2 普通表结构问题
默认的普通表结构中,表的最后一级目录就是表的目录,而底层的计算会使用表的最后一级目
录作为Input进行计算,这种场景下,我们就会遇到一个问题,如果表的数据很多,而我们需要被
处理的数据很少,只是其中一小部分,这样就会导致大量不必要的数据被程序加载,在程序中被过
滤,导致大量不必要的计算资源的浪费。
例如,上面的需求中,只需要对2021-03-24日的数据进行计算,但实际上由于表结构的设计,
在底层执行MapReduce时,将整张表的数据都进行了加载,MapReduce程序中必须对所有数据进
行过滤,将3月24号的数据过滤出来,再进行处理。假设每天有1G的数据增量,一年就是365GB的
数据,按照业务需求,我们每次只需要对其中一天的数据进行处理,也就是处理1GB的数据,程序
会先加载365GB的数据,然后将364GB的数据过滤掉,只保留一天的数据再进行计算,导致了大量
的磁盘和网络的IO的损耗。
评论0
最新资源