java—如何在hbase中实现缓冲写的大小调整?

55ooxyrt  于 2021-06-09  发布在  Hbase
关注(0)|答案(1)|浏览(302)

hbase允许您以批处理模式进行put。可以以字节为单位指定批大小。只要底层缓冲区已满,就会将其推送到服务器。
hbase如何计算每个put的大小?有什么方法可以动态计算java对象的大小吗?如果是这样的话,能便宜地计算吗?

6vl6ewon

6vl6ewon1#

hbase使用了一个启发式的近似值 Put s和 KeyValue s来决定何时刷新缓冲写入程序,如这里所示。
这个 heapSize() 方法是由 HeapSize 接口,其中 KeyValue 以及 Put 两者都实现了。
特别注意 KeyValue 利用对自身实现的了解,仅提供对自身规模的合理准确估计。没有语言级别的魔法来精确计算大小。 KeyValue#heapSize 是一个常数时间算法。 Put#heapSize 在包含的数量上是线性的 KeyValues ,我希望它能足够快地用于大多数目的,因为单个put通常只有不到1000个单元格。

相关问题