Hbase如何按时间戳排序
Posted
技术标签:
【中文标题】Hbase如何按时间戳排序【英文标题】:Hbase how to do sorting by timestamp 【发布时间】:2018-07-16 13:08:12 【问题描述】:我想从 HBase 中的数据中获取所有信息,例如在两个时间戳之间,并且所有数据都应该按时间戳排序
首先我想在 Hbase shell 中做它来试试性能。
在 RDBMS 中查询可能是这样的
从 start_date 所在的表中选择 column1,column2 > timestamp and end_date
无论如何,描述顺序在这里都是最重要的
【问题讨论】:
【参考方案1】:性能根本不会好 - 您必须扫描表中的每一行以找到相关时间戳之间的所有行,然后对结果进行排序。在 HBase shell 中无法进行排序。
考虑一个以时间戳为键的二级索引表,链接回主表。
作为替代方案,请查看 Apache Phoenix 在 HBase 上的类似 SQL 的功能。
【讨论】:
感谢本·沃森。这是有帮助的一个问题,凤凰也会给出相同的性能[假设我们不创建以时间戳为键的辅助表] Phoenix 应该更快,因为它包含底层优化并且可以为您生成索引。【参考方案2】:您甚至可以使用 Apache Drill 在 Hbase 上进行 sql 查询。
对于 Hbase Shell,您可以使用
scan 't1', TIMERANGE => [0, 1416083300000]
这里 t1 => 表名 时间范围为纪元时间
如果您可以编码并找到此链接
https://hbase.apache.org/apidocs/org/apache/hadoop/hbase/io/TimeRange.html
它拥有你期待的所有可用功能。
【讨论】:
以上是关于Hbase如何按时间戳排序的主要内容,如果未能解决你的问题,请参考以下文章
按最近的时间戳对数组中的对象数组进行排序,然后使用 jq 按每个数组的第一个对象的时间戳对外部数组进行排序