gpt4 book ai didi

mapreduce - HBase Mapreduce 在多个扫描对象上

转载 作者:行者123 更新时间:2023-12-03 00:02:05 33 4
gpt4 key购买 nike

我只是想针对我们正在做的一些数据分析工作来评估 HBase。

HBase 将包含我们的事件数据。键为 eventId + 时间。我们想要对日期范围内的几种事件类型 (4-5) 进行分析。事件类型总数约为1000个。

在 hbase 表上运行 mapreduce 作业的问题是 initTableMapperJob (见下文)仅需要 1 个扫描对象。出于性能原因,我们只想扫描给定日期范围内 4-5 个事件类型的数据,而不是 1000 个事件类型。如果我们使用下面的方法,那么我想我们没有这个选择,因为它只需要 1 个扫描对象。

public static void initTableMapperJob(字符串表, 扫描扫描, 类映射器, 类输出KeyClass, 类输出值类, org.apache.hadoop.mapreduce.Job 作业) 抛出 IOException

是否可以在扫描对象列表上运行mapreduce?有什么解决方法吗?

谢谢

最佳答案

TableMapReduceUtil.initTableMapperJob 将您的作业配置为使用 TableInputFormat,正如您所注意到的,它需要一次 Scan

听起来您想扫描表的多个段。为此,您必须创建自己的 InputFormat,例如 MultiSegmentTableInputFormat。扩展 TableInputFormatBase 并重写 getSplits 方法,以便它为表的每个开始/停止行段调用 super.getSplits 一次。 (最简单的方法是每次TableInputFormatBase.scan.setStartRow())。将返回的 InputSplit 实例聚合到单个列表。

然后自行配置作业以使用自定义的 MultiSegmentTableInputFormat

关于mapreduce - HBase Mapreduce 在多个扫描对象上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4821455/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com