如何在MapReduce作业中使用HBase二级索引表作为输入?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在MapReduce作业中使用HBase二级索引表作为输入?相关的知识,希望对你有一定的参考价值。
我是HBase的新手,我有一个带有rowkey = id-YYYYMMDD的主表,一个带有rowkey = YYYYMMDD-id的二级索引表和一个带有主表中rowkey的列。我将在不久的将来拥有大约100万个ID,我将需要创建一个MapReduce作业来总结给定日期的ID(YYYYMMDD)。
如何将二级索引表传递给mapreduce作业,以便在主表中运行相应的“get(rowkey)”以获取列并对数据进行sumarize?
答案
你有2个选择:
- 首先,在索引表上运行扫描。扫描将具有startRow和stopRow(例如'20190401'和'20190402'),因此它将扫描连续的密钥空间区域并从主表中收集ID。时间复杂度将为O(M),其中M是给定批次中的项目数。然后使用Get通过ID请求主表中的数据。
- 由于您将日期作为主表键的一部分,您可以使用键过滤进行MapReduce扫描,该过滤将在O(N / P)中运行,其中N是表中的总行数,P是并行度您的群集。
以上是关于如何在MapReduce作业中使用HBase二级索引表作为输入?的主要内容,如果未能解决你的问题,请参考以下文章
HBase mapreduce 作业 - 多次扫描 - 如何设置每次扫描的表
如何将 HBase 的扫描限制在 MapReduce 作业的相关(未过滤)区域
原生 mapreduce VS hbase mapreduce