分享

新手请教一个新API Tool,ToolRunner的问题

查看官方API和看博客都推荐使用(据说是2.4新API) implements Tool 重写run方法。
too1.png

本人使用hadoop2.6   官方文档如图所示 可直接getconf()获取配置信息
tool2.png 但实写 需要强制实现getconf() 放任不管则会空指针异常

查看源码发现2.6版本的Tool  public abstract interface Tool extends Configurable 继承了Configurable
而Configurable带有
public abstract interface Configurable
{
  public abstract void setConf(Configuration paramConfiguration);

  public abstract Configuration getConf();
}

求个实例如何重写getconf()

已有(3)人评论

跳转到指定楼层
arsenduan 发表于 2015-9-6 20:55:04
感觉楼主没有太清楚表达自己的意思

如果在写mapredcue的时候,遇到了异常等信息,注意版本兼容。正常使用,且引用的包是当前版本的包,肯定是不会有问题的。

假如楼主想重写里面的方法,那么需要改动hadoop源码。改动完毕,则需要重新打tar包,然后安装。
在开发和部署,都需要引入自己修改的包。

至于如何重写,Java里面是非常容易实现的。这里说一下,但是如果楼主缺乏功底,可能写了也不太明白。
所以建立先看看重写的实现,然后改动源码,最后打包,实现楼主所说的问题。

重写:


就比如上面:

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.util.Tool;

public class rewriteTool implements Tool
{

...........
...........
//以上省略

public Configuration getConf()
{
//读取文件
String encoding="GBK";
                File file=new File(filePath);
                if(file.isFile() && file.exists()){ //判断文件是否存在
                    InputStreamReader read = new InputStreamReader(
                    new FileInputStream(file),encoding);//考虑到编码格式
                    BufferedReader bufferedReader = new BufferedReader(read);
                    String lineTxt = null;
                    while((lineTxt = bufferedReader.readLine()) != null){
                        System.out.println(lineTxt);
                    }
                    read.close();
return "我想重写"

}


}




然后把自己该的打包,使用rewriteTool调用getconf,自己就重写了。


这里只是举例,代码也是伪代码,楼主明白意思即可。



回复

使用道具 举报

skippersky 发表于 2015-9-6 22:26:44
arsenduan 发表于 2015-9-6 20:55
感觉楼主没有太清楚表达自己的意思

如果在写mapredcue的时候,遇到了异常等信息,注意版本兼容。正常使 ...

额,我没表达好,我本人有快三年JAVA功底,重写知道的
这个疑问主要是1.1版本 实现Tool 接口之后只需重写run方法
getconf()可以直接调用  举例:Job job = new Job(getConf(),"jobname")

而2.4之后的版本Tool接口 需要重写 run() getconf() setconf三个方法
刚刚接触hadoop 不知道getconf()该如何重写
回复

使用道具 举报

leo_1989 发表于 2015-9-7 12:15:56
skippersky 发表于 2015-9-6 22:26
额,我没表达好,我本人有快三年JAVA功底,重写知道的
这个疑问主要是1.1版本 实现Tool 接口之后只需重 ...

楼主从哪看到的需要重写这些接口
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条