浅谈MapReduce编程三

(3)下面实现一个自己的InputFormat,需要处理的数据为(时间:URL

   

  public class TimeUrlTextInputInputFormat extends FileInputFormat<Text,URLWritable>{
       public RecordReader<Text,URLWritable> getRecordReader(
         InputSplit input,JobConf job,Reporter reporter)throws IOException{
      return new TimeUrlLineRecorderReader(job,(FileSplit)input);
}  }


pulbic class URLWritable implements Writable{
protected URL url;
public URLWritable(){}
public URLWritable(URL url){
  This.url=url;
}
public void write(DataOutput out) throws IOException{
   Out.writeUTF(url.toString());
}
public void readFields(DataInput in) throws IOException{
   url=new URL(in.readUTF());
}
public void set(String s)throws MalformedURLException{
   Url=new URL(s);
}
} 


class TimeUrlLineRecordReader implements RecordReader<Text,URLWritable>{
   private KeyValueLineRecorderReader lineReader; 
   private Text lineKey,lineValue;
   public TimeUrlLineRecordReader(JobConf job,FileSplit split) throws IOException{
     lineRecorder=new  KeyValueLineRecordReader(job,split);
     lineKey=lineReader.createKey();
     lineValue=lineReader.createValue();
   } 
   public boolean next(Text key,URLWritable value) throws IOException{
     if(!lineReader.next(lineKey,lineValue)){
        Return false;
     }
     key.set(lineKey);
     Value.set(lineValue.toString());
    return true;
   }
   public Text createKey(){
    Return new Text("");
   }
  public URLWritable createValue(){
     return new URLWritable(); 
 }
  public long getPos() throws IOException{
   Return lineRecorder.getPos();
  }
  public float getProgress() throws IOException{
   Return lineReader.getProgress();
}
public void close() throws IOException{
   lineReader.close();
}
}

 

 

七、输出格式 outputFormat

   hadoop中实现了OutputFormat接口的类有如下几个

TextOutputFormat<K,V>:用tab键分隔输出,可以通过mapred.textoutputformat.separator

属性进行更换。

SequenceFileOutputFormat<K,V>:和SequeceFileOutputFormat搭配使用

NullOutputFormat<K,V>:什么都不输出

<!--EndFragment-->
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值