我正在尝试为HBase表中的数据编写一个链式MapReduce作业,并需要一些帮助。我不希望人们通过伪代码为此提供代码,基于HBase的Java API会很好。
简而言之,我要做的是,
MapReduce作业1: 从两个没有公共行键的表中读取数据,并在reducer中创建一个摘要。 reducer的输出是一个Java对象,其中包含已序列化为字节代码的摘要。我将此对象存储在HBase的临时表中。
MapReduce作业2: 这是我遇到问题的地方。我现在需要阅读这个摘要对象,以便它可以在每个映射器中使用,这样当我从第三个(不同的)表中读取数据时,我可以使用此摘要对象对我从第三个表中读取的数据执行更多计算
我阅读了有关分布式缓存的信息并试图实现它,但这似乎没有成功。如果需要,我可以以编辑的形式提供更多详细信息,因为我现在不想发送此问题的垃圾邮件,其详细信息可能无关紧要。
答案 0 :(得分:0)
嗯,这可能听起来很愚蠢,但是如果我们查询一个非常小的表,我们可能会使用HBase Java API(即使在MapReduce作业中)读取值,然后将它们存储在静态变量中。这样,我们每个Mapper只需要读取一次这些值,它不会带来很多开销。