ID Timestamp1 Timestamp2 Timestamp3 Timestamp4 Timestamp5
101003978854 10.1 34.2 23.5 19.36 28.05
101003998120 21.19 15.09 13.24 21.86 10.34
109721347573 13.76 26.8 10.09 31.12 27.43以上数据库结构是我对使用Hbase感兴趣的结构。我知道使用singlecolumnname或singlecolumnvalue过滤器的Hbase查询对于减少no是有效的。列过滤器。但是,我有兴趣获得一个时间范围查询,比如上午10点到上午11点之间的特定ID的数据。
让我知道如何做到这一点。或者,是否有更好的方法来实现类似于开源大数据栈中的其他技术。
谢谢
发布于 2016-12-08 12:56:59
HBase可以用较少的no来表现良好。列家族和任何一个没有。对于seeks.If的列,模式设计得很好,您也可以非常有效地进行范围扫描,而不需要过滤器,从而导致效率低下。
如果您想查询一个特定的ID,让它成为行键是一个好主意。但是,按照您的建议,与列一起使用并不是一个好主意,因为不可能获得基于范围的列。
但是,在这种情况下,您可以采用以下方法,
rowKey(时间戳和ID) colum1(计数器,非常适合高度并发数据聚合) column2 .
10.1ID1(as byte array) 1000 100...
10.1ID2 100 1000..
10.2ID1 10 100...
10.2ID2 5 20....现在,如果您想对特定的计时器(例如10-11)进行扫描,那么您可以对所有if使用部分开始行键(10.0)和部分结束行键(10.9)进行扫描。对于一个特定的id(例如ID1),您可以使用开始行键作为10.0ID1,结束作为10.9ID1。
如果您想要扫描一个it的范围,那么最好使用rowKey。
如果要筛选扫描结果,请保持较小的列。也适用于较小的。对于行(按照扫描的意图),将时间戳保留为小时、日期、月份,以适合您的要求为准。
对于扫描,最好是在集群节点之间均匀分布数据,这样扫描就会更快,因为它们将在regions.Refer Hbase presplit keys strategy上并行执行。
Hbase与良好的模式和行键设计非常好,并从使用替代和类似的使用经验,我可以保证它是最好的之一。
https://stackoverflow.com/questions/41035266
复制相似问题