map: (K1, V1) → list(K2, V2)
reduce: (K2, list(V2)) → list(K3, V3)

(K1, V1):
jobConf.setInputKeyClass(K1.
class );
jobConf.setInputValueClass(V1.
class );

list(K2, V2):
job.setMapOutputKeyClass(K2.
class);
job.setMapOutputValueClass(V2.
class);

list(K3, V3):
jobConf.setOutputKeyClass(K3.
class );
jobConf.setOutputValueClass(V3.
class );

  

jobConf.setInputFormat(MyInputFormat. class );
InputFormat:
TextInputFormat:用于读取纯文本文件,文件被分为一系列以LF或CR结束的行,key是每一行的偏移量(LongWritable),value是每一行的内容(Text)。
KeyValueTextInputFormat:用于读取文件,如果行被分隔符分割为两部分,第一部分为key,剩下的为value;若没有分隔符,整行作为key,value为空。
SequenceFileInputFormat:用于读取SequenceFile,读取格式要与写出SequenceFileOutputFormat时设置的setOutputKeyClass与setOutputValueClass一致(key+value的格式)。
SequenceFileInputFilter:根据filter从SequenceFile中取得满足条件的数据,通过setFilterClass指定Filter,内置了三种Filter,RegexFilter取key值满足指定的正则表达式的记录;PercentFilter通过指定参数f,取记录行数f%==0的记录;MD5Filter通过指定参数f,取MD5(key)%f==0的记录。
例子:conf.setInputFormat(KeyValueTextInputFormat.class);


jobConf.setOutputFormat(MyOutputFormat. class ); 
setOutputFormat:
TextOutputFormat:输出到纯文本文件,格式为key + “    ”+ value。
NullOutputFormat:hadoop中的/dev/null,将输出送进黑洞。
SequenceFileOutputFormat,输出SequenceFile文件,其具体格式与setOutputKeyClass,setOutputValueClass相关 ,如此SequenceFileInputFormat的读取格式应该与SequenceFileOutputFormat的输出格式一致(key+value的格式)
MultipleSequenceFileOutputFormat, MultipleTextOutputFormat:根据key将记录输出到不同的文件,可以被重写 
DBInputFormat和DBOutputFormat,从DB读取,输出到DB。
例子:conf.setOutputFormat(TextOutputFormat.class);

  

相关文章:

  • 2021-04-02
  • 2021-10-02
  • 2022-02-22
  • 2022-02-21
  • 2021-09-14
  • 2021-11-21
  • 2022-12-23
猜你喜欢
  • 2021-06-16
  • 2022-12-23
  • 2022-12-23
  • 2021-07-21
  • 2021-11-12
  • 2021-09-19
  • 2022-12-23
相关资源
相似解决方案