hadoop中的hive存储,有趣的发现但不明白

ijxebb2r  于 2021-06-02  发布在  Hadoop
关注(0)|答案(1)|浏览(442)

这是一个关于hive/hadoop的发现,我有一个名为titles的表,我把它分成两部分,一部分是titles20000,另一部分是titles20000more,行数看起来不错,但是数据大小看起来不同,请看这里的屏幕截图,它来自namenode,输入“hostaddress:50070“在浏览器中:

看看块大小,第一个表标题有4个块,而拆分的子表每个只有1个块。
我还通过在配置单元中执行show属性以另一种方式检查了数据大小:

我快速计算了行数:

n = titles: 443309
n1 = titles20000: 14781
n2 = titles20000more: 428528
n = n1 + n2 = 443309
% of n1 =  3%
% of n2 = 97%

这是正确的。
然后我又快速计算了一下总尺寸:

n = titles: 19934943
n1 = where emp_no < 20000: 624642
n2 = where emp_no >=20000: 18423685
n1+n2 = 19048327 < n

显然这与之前的观察相符,问题是:
对于原始表标题,它使用了4个128mb块作为拆分的第二个表标题20000more,它包含97%的行,但只使用了1个128mb块
在第一个屏幕截图中,大小的含义是什么(第4列)?
怎么会这样?

afdcj2ne

afdcj2ne1#

size是数据的实际大小。
块大小是存储数据的块的大小。
原始表使用四个块,因为它的数据是由使用四个Map器的仅Map作业创建的。将数据复制到其他表中时,它似乎已合并到单个块中。

相关问题