hbase MapReduce程序样例入门(二)

接上一篇

3、最后就是从hbase中的表作为数据源读取,hdfs作为数据输出,简单的如下:

Configuration conf = HBaseConfiguration.create();
Job job = new Job(conf, "job name ");
job.setJarByClass(test.class);
Scan scan = new Scan();
TableMapReduceUtil.initTableMapperJob(inputTable, scan, mapper.class,
                Writable.class, Writable.class, job);
job.setOutputKeyClass(Writable.class);
job.setOutputValueClass(Writable.class);
FileOutputFormat.setOutputPath(job, Path);
job.waitForCompletion(true);

mapper和reducer简单如下:

public class mapper extends
                TableMapper<</span>KEYOUT, VALUEOUT>{
 
        public void map(Writable key, Writable value, Context context)
                        throws IOException, InterruptedException {
                        //mapper逻辑
                        context.write(key, value);
                }
 
        }
}
 
public class reducer extends
                Reducer<</span>Writable,Writable,Writable,Writable>  {
 
        public void reducer(Writable key, Writable value, Context context)
                        throws IOException, InterruptedException {
                        //reducer逻辑
                        context.write(key, value);
                }
        }
}

最后说一下TableMapper和TableReducer的本质,其实这俩类就是为了简化一下书写代码,因为传入的4个泛型参数里都会有固定的参数类型,所以是Mapper和Reducer的简化版本,本质他们没有任何区别。源码如下:

public abstract class TableMapper<</span>KEYOUT, VALUEOUT>
extends Mapper<</span>ImmutableBytesWritable, Result, KEYOUT, VALUEOUT> {
}
 
public abstract class TableReducer<</span>KEYIN, VALUEIN, KEYOUT>
extends Reducer<</span>KEYIN, VALUEIN, KEYOUT, Writable> {
}

好了,可以去写第一个wordcount的hbase mapreduce程序了。

自:http://blog.pureisle.net/archives/1938.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值