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如何按时间戳排序的主要内容,如果未能解决你的问题,请参考以下文章

Flutter 按时间戳对 Firebase 快照进行排序

按最近的时间戳对数组中的对象数组进行排序,然后使用 jq 按每个数组的第一个对象的时间戳对外部数组进行排序

如何根据来自firebase的时间戳获取排序数据[重复]

如何获得文件的最新出现以及如何在UNIX中使用AWK按时间戳排序

MySQL 按时间戳分组/排序不能按预期工作

带有 UNIX 时间戳的 MySQL 表 - 按时间戳排序并计算一行与前一行之间的差异