HBase-Scan

0.架构图:
在这里插入图片描述
1 . get()方法底层也是Scan实现

2 .Scan:类似数据库系统中的游标

3.为什么要用Scan:

1.HBase中的存储文件是不可变的,因此不能直接删除。因此有墓碑标记,记录着已删除的信息
2.也不能直接更新,隔了一段时间新写入的数据会刷写到不同的存储文件中
3.那么如何得到“真正准确的一行”?
4.HBase没有实现直接访问特定一行或列的功能。
5.HFile中最小的单元是块,所以Scan想要访问到特定的行或列,必须载入所有可能含有该数据的块,并且扫描这些块来寻找。这既是Scan。

4.Scan原理:

5.横跨内存、存储文件、硬盘来寻找.
6.而墓碑标记的时间戳如果大于标记的该数据的时间戳,则代表该数据已被删除。
7.Scan扫描块是不断调用next()函数。直到读取完所有块。
8.但是还有一个问题:HBase中数据量巨大,如何快速查询?
9.在Scan扫描之前,需要一个快速排查的阶段。使用时间戳和可选的布隆过滤器来跳过绝对不能有匹配数据的文件。

猜你喜欢

转载自blog.csdn.net/weixin_41227335/article/details/86231694
今日推荐