这是关于hive / hadoop的一个发现,我有一个名为titles的表,我将它分成两部分,一部分是titles20000,另一部分是titles20000,行计数看起来不错,但数据大小看起来不同,请参阅这里的截图来自namenode,输入"主机地址:50070"在浏览器中:
查看Block Size,第一个表标题有4个块,而拆分子表每个只有1个。
我还通过在hive中执行show属性来检查dataSize的另一种方式:
我对行数进行了快速计算:
n = titles: 443309
n1 = titles20000: 14781
n2 = titles20000more: 428528
n = n1 + n2 = 443309
% of n1 = 3%
% of n2 = 97%
这是正确的。
然后我对totalSize做了另一个快速计算:
n = titles: 19934943
n1 = where emp_no < 20000: 624642
n2 = where emp_no >=20000: 18423685
n1+n2 = 19048327 < n
显然,这符合之前的观察,问题是:
对于原始表标题,它使用了4个128MB块 对于拆分的第二个表titles20000,它包含97%的行,但仅使用1个128MB块
在第一个屏幕截图中,尺寸(第4列)的含义是什么?
怎么会发生这种情况?
答案 0 :(得分:1)
尺寸是数据的实际尺寸。
块大小是存储数据的块的大小。
您的原始表使用四个块,因为它的数据是由使用四个Mapper的Map-only作业创建的。当数据被复制到其他表中时,它似乎已合并为一个块。