Map Reduce的Map函数可以调用(外部)web服务吗?



我必须在Java中编写一个使用外部web服务的Map Reduce作业。我的问题是是否允许从Map Reduce作业的Map函数调用HTTP请求,即:

public class GeoLocator {
private static String genderCheck = "female";    
    public static class Map extends MapReduceBase implements Mapper {
    /* CALL EXTERNAL WEB SERVICE HERE */
    }
    .. 
}

如果是,如何调用web服务?

我认为你在使用旧的API,因为,我在你的类中看到这一行,

public static class Map extends MapReduceBase implements Mapper {}

因此,首先,您需要在JobConf对象中设置web服务URL,然后,从JobConf实例中检索映射器中的相同URL。

此外,确保您的webservice url可以从所有Hadoop节点访问

例如-

在main()函数中,您可以执行如下操作:

JobConf job = (JobConf) getConf();
job.set("webservice.url", "http://your_address_whatsoever");

在Mapper类中-

String url = null;
public void configure(JobConf job) {
       url = (String) job.get("webservice.url");
} 

但是我建议你使用新的API来使事情变得简单-

在main()中你可以直接输入

Configuration conf = getConf();
set("webservice.url", "http://your_address_whatsoever");

映射器类的map()函数只是执行

String url = context.getConfiguration().get("webservice.url");

相关内容

  • 没有找到相关文章

最新更新