skippersky 发表于 2015-9-6 22:26 楼主从哪看到的需要重写这些接口 |
arsenduan 发表于 2015-9-6 20:55 额,我没表达好,我本人有快三年JAVA功底,重写知道的 这个疑问主要是1.1版本 实现Tool 接口之后只需重写run方法 getconf()可以直接调用 举例:Job job = new Job(getConf(),"jobname") 而2.4之后的版本Tool接口 需要重写 run() getconf() setconf三个方法 刚刚接触hadoop 不知道getconf()该如何重写 |
感觉楼主没有太清楚表达自己的意思 如果在写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,自己就重写了。 这里只是举例,代码也是伪代码,楼主明白意思即可。 |