如何在 MapReduce 作业中使用 HBase 二级索引表和输入



我是HBase的新手,我有一个带有rowkey =id-YYYYMMDD的主表,以及一个带有rowkey =YYYYMMDD-id的二级索引表和一个主表中带有rowkey的列。在不久的将来,我将有大约100万个id,我需要创建一个MapReduce作业来汇总给定日期(YYYYMMDD(中的id。

如何将二级索引表传递给 mapReduce 作业,以便在主表中运行相应的"get(rowkey("以获取列并汇总数据?

您有 2 个选项:

  1. 首先,对索引表运行扫描。扫描将具有 startRowstopRow(例如 '20190401' 和 '20190402'(,因此它将扫描连续的键空间区域并从主表中收集 ID。时间复杂度为 O(M(,其中 M 是给定批次中的多个项目。然后,使用 Get 按 ID 从主表请求数据。
  2. 由于您将日期作为主表键的一部分,因此您只需使用键过滤进行MapReduce扫描,该扫描将在O(N/P(中运行,其中N是表中的总行数,P是集群的并行度。

最新更新