Hbase表是否可以根据时间进行分区?

Hbase表是否可以根据时间进行分区?,hbase,Hbase,我需要根据时间范围获取数据。是否有任何方法可以根据时间范围对hbase表进行分区。我要数据显示从9:00到9:05 您可以将时间戳作为密钥的第一部分。显然,缺点是您不能再直接查询其他键。如果你也需要,你可以考虑复制你的数据,如果这两个都对你很重要。< /P> < P>我的问题是重复的条目。我可以有许多事件同时发生。例如:我可以有10个事件发生在10:05。如果我将其转换为历元时间并插入,它们可能会在hbase中相互覆盖(或无法写入) 我可以附加一个ID和时间戳,但是如果我添加这个ID,我可以在m

我需要根据时间范围获取数据。是否有任何方法可以根据时间范围对hbase表进行分区。我要数据显示从9:00到9:05

您可以将时间戳作为密钥的第一部分。显然,缺点是您不能再直接查询其他键。如果你也需要,你可以考虑复制你的数据,如果这两个都对你很重要。< /P> < P>我的问题是重复的条目。我可以有许多事件同时发生。例如:我可以有10个事件发生在10:05。如果我将其转换为历元时间并插入,它们可能会在hbase中相互覆盖(或无法写入)


我可以附加一个ID和时间戳,但是如果我添加这个ID,我可以在mapreduce作业中设置开始和结束时间吗

您可以创建类型为
的复合键,然后hbase中的所有条目都将按时间戳排序。然后,可以创建从范围开始到范围结束的扫描仪

您可能面临的一个问题是,如果插入率很高,那么将有一台服务器成为所有新条目的热点。解决这个问题的一种方法是反转键并确保第一部分是随机的:
。这样做的优点是将写操作分布在整个集群中,缺点是需要读取整个表才能获得特定的范围

如果使用
的第一种方法,则映射作业可能无法将工作拆分为您想要的多个块。表拆分工作的默认方式是在区域上。如果时间片足够小,则可能只有一个区域为数据提供服务,而不会在查询中获得任何并行性。您可能会有一个自定义表拆分,该拆分可以跨多个映射器而不是区域并行化查询,但您仍然会从一个区域读取所有数据,这也可能存在并行性方面的缺点

您如何设置表取决于您的预期使用场景和读/写比例,以及您对每种情况的性能要求有多高

如果在时间戳中附加一个id以确保唯一性,那么仍然可以使用扫描器返回具有给定时间戳的所有事件。HBase根据字节表示按字母顺序对键进行排序。所以,如果您的键是
,您可以将扫描仪设置为从第
行开始,在第
行停止,以获取该时间戳处的所有事件