gpt4 book ai didi

java - 如何将 HBase 的扫描限制为仅与 MapReduce 作业相关(未过滤)的区域

转载 作者:行者123 更新时间:2023-11-30 05:31:34 24 4
gpt4 key购买 nike

我正在运行一个mapreduce作业将数据从HBase导出到HDFS。扫描中应用了多个过滤器。

无法通过行键限制扫描,因为它不包含所需的信息。

在运行 MR 作业时,YARN 会为 HBase 中的每个区域创建一个映射器。其中一些区域仅包含过滤后的数据,因此映射器不会收到任何要读取的内容,并会在一段时间后终止。由于需要提取的数据量明显小于总数据量,因此作业最终会因为大量mapper被终止而失败。

我不是在寻找答案:

  • 在映射器内实现“手动”过滤。
  • 增加超时间隔。

我正在寻找的是其中之一:

  • 有关如何解决此问题的文章的链接。

  • 对此的有效解决方案或想法(不一定带有代码),其中不涉及通过映射器运行完整的 HBase 表。或者至少(让我们说实话)减少了映射器内的计算负载。

  • 确认没有有效的方法可以做到这一点,因为我花了相当多的时间来寻找这个。

我相信代码示例不是必需的,因为了解 HBase 的人会知道我在要求什么。

感谢您的建议。

最佳答案

为了解决这个问题,我创建了一个 MR 作业。

Mapper 将每个行键分类为一个类别,并为每种类型选择第一个和最后一个元素(因为所有内容都在一个区域内排序)。为了选择最后一个元素,我一直在更新单个对象并分配每个值,该值将登陆到映射器中。然后,我在清理阶段将这两个值写入上下文(classifier_name 作为键,row_key 作为值)。

Mappers 输出很轻(类别数 * 2),因此我将 reducer 的数量设置为 1,并编写了一些基本逻辑来使用 low_row/high_row 创建对象,该逻辑在飞行中更新,但我没有最后必须对任何东西进行排序。所以最终的输出是这样的形式:
classifier_name、start_rowKey、end_rowKey

然后我就可以使用这些值来限制我的扫描。

希望对某人有帮助:)

关于java - 如何将 HBase 的扫描限制为仅与 MapReduce 作业相关(未过滤)的区域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57417160/

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