我正在尝试将20k文件批量加载到一个hbase表中。平均文件大小为400kb。但是,有些文件的大小高达70mb。所有文件的总大小为11gb。这种方法是标准的,在调用loadincremenalfiles之后发出键值对。当我对随机抽取的10个文件运行代码时,一切正常。我注意到生成的hfiles的大小是文件本身大小的1.3倍。然而,当我为所有20k文件运行相同的代码时,我得到的hfiles加起来是400gb大小。是数据本身的36倍。除了表数据之外,hfiles还包含索引和元数据,但即便如此,还有什么能解释如此巨大的大小增长呢?
1条答案
按热度按时间zzwlnbp81#
我发现了空间急剧增加背后的原因。
这就是我的Map器发出的键值对的样子(输入是一个序列文件)。
问题出在电话里
value.getBytes()
. 它返回一个用零填充的字节数组。把它改成value.copyBytes()
修正了行为。hadoop-6298对此进行了讨论