hello world 1
hello world 2
…… 10万行
map产生中间数据集,单词标1
比如有10万行hello为key,1为value;1行1为key,1为value
整个输出作为reduce的输入
源码
public class Job extends JobContextImpl implements JobContext
public interface JobContext extends MRJobConfig
在interface MRJobConfig内部,有很多很多配置信息,都是常量,比如:
public static final String INPUT_FORMAT_CLASS_ATTR = "mapreduce.job.inputformat.class";
这些字符串就是xml文件中的name-value对的那个引用,用这些取引用
这个默认配置便代表了map任务默认大小为1G,cpu为1个
public static final String MAP_MEMORY_MB = "mapreduce.map.memory.mb";
public static final int DEFAULT_MAP_MEMORY_MB = 1024;
public static final String MAP_CPU_VCORES = "mapreduce.map.cpu.vcores";
public static final int DEFAULT_MAP_CPU_VCORES = 1;
通过对源码的探究,发现MyMapper继承自Mapper中的map方法,而这个方法必须要重写
(另外还有发现,对Mapper中的MapContext接口,不仅仅是Job类,诸如此类,都来源于前面说的MRJobConfig)
ctrl o调出方法列表(idea为Ctrl h)
1.7设置,改两个,一个library一个preferance
然后打包,发到node01
然后hadoop jar MyWC.jar com.sxt.hadoop.mr.MyWC
然后 hdfs dfs -get /data/wc/output/* ./
然后vi part-r-00000
输出结果就在这里