我来自sql背景,缺少hbase中的一些基本概念。我有我的mysql数据分为5列,其中我需要两列数据过滤。在sql中,查询非常简单,我可以在这两列上放置索引,并可以根据where子句中为这两列定义的某个范围获取数据。
这两列中的数据是单调递增的,就像时间戳一样。在hbase中设计它的最佳方法是什么。我正在考虑将timestamp作为rowkey,并带有一定的热点度量。但是对于每个查询,我需要在rowkey中放入range filter,然后扫描结果并基于第二列进行筛选。我不确定这是否足够快。那么,hbase在索引方面的等价物是什么呢。
还有一点需要注意,我只想加载一次数据,然后只执行读取请求。
非常感谢您的帮助。
2条答案
按热度按时间qlvxas9a1#
这取决于您最常执行的查询类型。如果您主要需要过滤一列,我建议您将此列与行键中的时间戳放在一起。例如:
如果两者都用于过滤,则
在最初的情况下,沙德基可能应该是这样的
hash(column) % number_of_regions
,秒hash(column1 + column2) % number_of_regions
. 因此,您总是可以获得特定column1和column2组合的时间序列数据。或者如果两者都需要,可以考虑使用多个表,因为只需编写一次。izkcnapc2#
rowkey必须对您来说是唯一的。是的,你可以用时间,但我认为你应该用其他参数的时间戳。例如;时间戳+用户ID。这对你很安全。假设您有许多hbase客户机,他们编写了一个hbase服务器。2客户端可以同时在hbase服务器中写入。当然,您不需要在行键中写入所有属性。这不是真的。