gpt4 book ai didi

hadoop - hbase 批量加载中的奇怪行为

转载 作者:可可西里 更新时间:2023-11-01 15:26:51 26 4
gpt4 key购买 nike

我正在尝试将 20k 文件批量加载到 hbase 表中。平均文件大小为 400kb。然而,有些文件有 70 MB 那么大。所有文件加在一起的总大小为 11gb。该方法是标准的,在调用 loadIncremenalFiles 之后发出键值对。当我为 10 个文件的随机样本运行代码时,一切正常。我注意到生成的 hfile 的大小是文件本身大小的 1.3 倍。但是,当我对所有 20k 文件运行相同的代码时,我得到的 hfiles 放在一起大小为 400gb。数据本身的 36 倍。HFiles 除了表数据之外还包含索引和元数据,但即便如此,如何解释大小的如此急剧增加?

最佳答案

我发现了空间急剧增加背后的原因。

这就是我的映射器发出键值对的样子(输入是一个序列文件)。

public void map(Text key, BytesWritable value, Context context)
....
byte[] row = Bytes.toBytes(rowID);
hKey.set(row);
kv=getKV(familyRaw, Bytes.toBytes("content"), value.getBytes());

问题出在调用 value.getBytes() 中。它返回一个用零填充的字节数组。将其更改为 value.copyBytes() 修复了该行为。

这在 HADOOP-6298 中讨论

关于hadoop - hbase 批量加载中的奇怪行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43854980/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com