如何发送一些数据到Mapper类(运行在HBase数据库中的数据上)



我需要发送一些运行在HBase节点上的mapper作业的信息。我已经将数据定义为类中的静态成员,但似乎当映射器在其他节点上运行时,数据没有传输到节点。有什么办法吗?

public class GetResultFromVerticesIDMapper extends TableMapper< ResultVal, IntWritable > {
    public static HashMap<Long, Boolean> vertexIDsHashMap;
    public static int                    nResultComponents;
...
}

我通过向配置发送参数来做到这一点:

Configuration conf;
conf.addResource(new Path(hbaseConfigurationFile));
conf.set("simplificationParameters", simpParameters.toString());

并按如下方式将它们放入映射器类:

_simplificationParameters.fromString(context.getConfiguration().get("simplificationParameters"));

你提到的方法是一种方法。另一种方式,如果你发送系统属性,那么它将自动设置为上下文。

在运行程序时,您可以将参数传递为系统属性(带有-D选项)或接受输入并使用System.setProperty("simplificationParameters","user_entered_input")设置它们

你可以在mapper或reducer中收回它,就像你在你的答案中做的那样…即context.getConfiguration().get("simplificationParameters")

最新更新