使用mapreduce复制hbase表
Posted ItStar
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用mapreduce复制hbase表相关的知识,希望对你有一定的参考价值。
为了更直接精准的解决小伙伴的问题,特意建了一个社交群(936736476)为小伙伴提供讨论交流的平台。
准备工作如下:
一.两张hbase表——fruit(有数据)和fruitresult(无数据),我们将使用mapreduce将hbase中的frult以可自定义的方式复制到fruitresult中
二.创建一个hbase工程,导入对应jar包
代码如下:
map端:
public class FruitMapper extends TableMapper<ImmutableBytesWritable, Put> {
@Override
protected void map(
ImmutableBytesWritable key,
Result value,
Mapper<ImmutableBytesWritable, Result, ImmutableBytesWritable, Put>.Context context)
throws IOException, InterruptedException {
Put put = new Put(key.get());
Cell[] cells = value.rawCells();
for (Cell cell : cells) {
if ("name".equals(Bytes.toString(CellUtil.cloneQualifier(cell)))) {
put.add(cell);
} else if ("color".equals(Bytes.toString(CellUtil
.cloneQualifier(cell)))) {
put.add(cell);
}
}
context.write(key, put);
}
}
reduce端如下:
public class FruitReducer extends
TableReducer<ImmutableBytesWritable, Put, NullWritable> {
@Override
protected void reduce(
ImmutableBytesWritable key,
Iterable<Put> values,
Reducer<ImmutableBytesWritable, Put, NullWritable, Mutation>.Context context)
throws IOException, InterruptedException {
// TODO Auto-generated method stub
for (Put value : values) {
context.write(NullWritable.get(), value);
}
}
}
drive端:
public class FruitDriver extends Configuration implements Tool {
Configuration configuration = null;
public static void main(String[] args) throws Exception {
Configuration conf = HBaseConfiguration.create();
int tool = ToolRunner.run(conf, new FruitDriver(), args);
}
@Override
public void setConf(Configuration conf) {
// TODO Auto-generated method stub
this.configuration = conf;
}
@Override
public Configuration getConf() {
// TODO Auto-generated method stub
return null;
}
@Override
public int run(String[] args) throws Exception {
Job job = Job.getInstance(configuration);
// job.setMapperClass(FruitMapper.class);
// job.setReducerClass(FruitReducer.class);
job.setJarByClass(FruitDriver.class);
Scan scan = new Scan();
TableMapReduceUtil.initTableMapperJob("fruit", scan, FruitMapper.class,
ImmutableBytesWritable.class, Put.class, job);
TableMapReduceUtil.initTableReducerJob("fruitresult",
FruitReducer.class, job);
System.out.println();
return job.waitForCompletion(true) ? 0 : 1;
}
}
运行结果如下:
除了hbase表之间的复制,还可以使用mapreduce从hdfs本地复制内容到hbase表中:使用MapReduce将Hadoop HDFS中的文件导入HBase
猜你喜欢
想从事大数据方向发展的朋友,直接回复“资料”获取领取免费资料方式
免费资料:17310069471
潭州大数据公开课讲师整理的VIM编辑器常用命令视频
原文:https://blog.csdn.net/qq_39327985/article/details/84495261
以上是关于使用mapreduce复制hbase表的主要内容,如果未能解决你的问题,请参考以下文章