2016-12-08 37 views
0
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的之一。我知道Hbase查询使用singlecolumnnamesinglecolumnvalue过滤器是有效的更少没有。列过滤器。 但我有兴趣得到一个时间范围查询,如上午10点到上午11点特定ID的数据。多个时间戳列名:使用BigData

让我知道如何做到这一点。或者是否有更好的方法来实现与开源大数据堆栈中的其他技术相似?

谢谢

回答

0

HBase可以执行更好的没有。列家庭和任何没有。如果模式设计良好,您还可以非常高效地进行范围扫描,而不需要过滤器,从而导致效率低下。

如果你想查询一个特定的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),那么您可以对所有ID使用部分开始rowkey(10.0)和部分结束rowkey(10.9)进行扫描。 对于一个特定的ID(比如ID1),您可以使用起始行密钥作为10.0ID1并结束为10.9ID1。

如果您想要扫描一系列ID,那么最好将rowKey作为参数。

如果要过滤扫描结果,请维护较少的列。 也为较少没有。 (如扫描所预期的那样),将时间戳保留为小时,天,月,以符合您的要求。

对于扫描,这也是最好的跨集群节点均匀地分布数据,使扫描速度更快,因为他们将在regions.Refer平行进行Hbase presplit keys strategy

HBase的工作非常好,良好的架构和设计rowkey并从使用替代品和类似用途的经验,我可以确保它是最好的之一。