如何在hadoop中将系统属性传递给映射函数

如何在hadoop中将系统属性传递给映射函数,hadoop,configuration,mapreduce,hbase,Hadoop,Configuration,Mapreduce,Hbase,在hadoop map reduce框架中,有没有一种方法可以将系统参数(比如-Dmy_param=XXX)传递给map函数。 作业提交到hadoop集群是通过.setJarByClass()完成的。 在mapper中,我必须创建配置,以便使其可配置,所以我认为通过属性文件的标准方式是可以的。只是在属性设置的地方传递参数。另一种方法是将属性文件添加到提交的jar中。有人有过如何解决这个问题的经验吗 如果您还没有在作业中使用它,您可以尝试GenericOptions Parser、Tool和Too

在hadoop map reduce框架中,有没有一种方法可以将系统参数(比如-Dmy_param=XXX)传递给map函数。 作业提交到hadoop集群是通过.setJarByClass()完成的。
在mapper中,我必须创建配置,以便使其可配置,所以我认为通过属性文件的标准方式是可以的。只是在属性设置的地方传递参数。另一种方法是将属性文件添加到提交的jar中。有人有过如何解决这个问题的经验吗

如果您还没有在作业中使用它,您可以尝试GenericOptions Parser、Tool和ToolRunner来运行Hadoop作业

注意:MyDriver扩展了已配置并实现的工具。 要运行您的作业,请使用此

hadoop -jar somename.jar MyDriver -D your.property=value arg1 arg2
有关详细信息

以下是我为您准备的一些示例代码:

公共类MyDriver扩展配置的工具{
公共静态类MyDriverMapper扩展映射器{
受保护的void映射(可长写键、文本值、上下文)
抛出IOException、InterruptedException{
//在映射器中,您可以检索已设置的任何配置
//从终端启动作业时,如下所示
conf=context.getConfiguration();
字符串yourPropertyValue=conf.get(“your.property”);
}
}
公共静态类MyDriverReducer扩展了Reducer{
受保护的void reduce(LongWritable键、Iterable值、上下文)
抛出IOException、InterruptedException{
//---一些代码---
}
}
公共静态void main(字符串[]args)引发异常{
int exitCode=ToolRunner.run(new MyDriver(),args);
系统退出(退出代码);
}
@凌驾
公共int运行(字符串[]args)引发异常{
配置conf=getConf();
//如果需要,您也可以在此处获取/设置为conf。
//您的.property也可以是文件位置和之后
//检索属性并将它们逐个设置为conf对象。
//--其他代码--//
Job Job=新作业(conf,“我的示例作业”);
//---其他代码---//
返回(job.waitForCompletion(true)?0:1;
}
}

那么,是否要将属性文件传递给每个映射程序?是的。让我再解释一下。我们的映射程序正在访问HBase中的数据,这意味着我们需要在映射函数中创建配置。出于测试等目的,我们不需要对配置进行硬编码。如果代码中缺少HBase hadoop mapreduce.imports,我不确定这是否是最好的集成方法。链接是404。什么是配置类的包?