浏览 1861 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2011-11-03
终于踏入了Hadoop的世界,先学习了Sqoop,然后MapReduce.这里结合MapReduce实现类似SQL的各种功能.如:max,min,order by,inner/left/right join group by等.但这里只是我的一个学习的过程,还有很多不足和错误.但我会步步深入不断改进,希望也能帮助到大家.同时今后也会不断跟进,比如读PIG/Hive的源码,看他们如何组织,如何写MapReduce.以及工作过程中一些实践经验和心得.毕竟这块资料还是比较少,尤其是系统性的. 这里我先贴上几个准备类,用于生成测试数据.以及答个测试框架. 首先贴上测试父类,具体请看注释: package com.guoyun.hadoop.mapreduce.study; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * MapReduce 测试父类 */ public abstract class MyMapReduceTest { public static final Logger log=LoggerFactory.getLogger(GetMaxAndMinValueMapReduceFixTest.class); public static final String DEFAULT_INPUT_PATH="testDatas/mapreduce/MRInput"; public static final String DEFAULT_OUTPUT_PATH="testDatas/mapreduce/MROutput"; public static final String NEW_LINE="\r"; public static final int DEFAULT_LENGTH=1000; protected String inputPath=DEFAULT_INPUT_PATH; // hadoop input protected String outputPath=DEFAULT_OUTPUT_PATH; // hadoop output protected boolean isGenerateDatas=false; // 是否生成测试数据 protected long maxValue=Long.MIN_VALUE; // 生成数的最大值,以便跟结果比较 protected long minValue=Long.MAX_VALUE; // 生成数的最小值,以便跟结果比较 public MyMapReduceTest() throws Exception { this(DEFAULT_LENGTH,DEFAULT_INPUT_PATH,DEFAULT_OUTPUT_PATH); } public MyMapReduceTest(long dataLength) throws Exception { this(dataLength,DEFAULT_INPUT_PATH,DEFAULT_OUTPUT_PATH); } /** * 该构造方法不会自动生成数据 * @param outputPath */ public MyMapReduceTest(String outputPath) { this.outputPath=outputPath; } public MyMapReduceTest(long dataLength,String inputPath, String outputPath) throws Exception { this.inputPath = inputPath; this.outputPath = outputPath; isGenerateDatas=true; init(dataLength); } public String getInputPath() { return inputPath; } public void setInputPath(String inputPath) { this.inputPath = inputPath; } public String getOutputPath() { return outputPath; } public void setOutputPath(String outputPath) { this.outputPath = outputPath; } public long getMaxValue() { return maxValue; } public void setMaxValue(long maxValue) { this.maxValue = maxValue; } public long getMinValue() { return minValue; } public void setMinValue(long minValue) { this.minValue = minValue; } public boolean isGenerateDatas() { return isGenerateDatas; } /** * 初始化,根据配置,会自动生成测试数据 * * @param length * @throws Exception */ private void init(long length) throws Exception{ if(isGenerateDatas){ generateDatas(length); } } /** * 生成测试数据,写入inputPath. * 根据不同的测试需要,由子类完成 * * @param length * @throws Exception */ protected abstract void generateDatas(long length) throws Exception; } 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |