我是hbase新手,我有一个rowkey=id yyyymmdd的主表,一个rowkey=yyyymmdd id的辅助索引表和一个rowkey位于主表中的列。在不久的将来,我将拥有大约100万个id,我需要创建一个mapreduce作业来汇总给定日期(yyyymmdd)中的id。如何将辅助索引表传递给mapreduce作业,以便在主表中运行相应的“get(rowkey)”来获取列并汇总数据?
6ju8rftf1#
您有两种选择:首先对索引表进行扫描。scan将有startrow和stoprow(例如“20190401”和“20190402”),因此它将扫描一个连续的键空间区域并从主表收集id。时间复杂度将是o(m),其中m是给定批次中的项目数。然后使用get通过ids从主表请求数据。因为您的主表键中有date,所以只需使用键筛选来执行mapreduce扫描,它将在o(n/p)中运行,其中n是表中的行总数,p是集群的并行度。
1条答案
按热度按时间6ju8rftf1#
您有两种选择:
首先对索引表进行扫描。scan将有startrow和stoprow(例如“20190401”和“20190402”),因此它将扫描一个连续的键空间区域并从主表收集id。时间复杂度将是o(m),其中m是给定批次中的项目数。然后使用get通过ids从主表请求数据。
因为您的主表键中有date,所以只需使用键筛选来执行mapreduce扫描,它将在o(n/p)中运行,其中n是表中的行总数,p是集群的并行度。