使用mapreduce复制hbase表

Posted ItStar

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用mapreduce复制hbase表相关的知识,希望对你有一定的参考价值。

为了更直接精准的解决小伙伴的问题,特意建了一个社交群(936736476)为小伙伴提供讨论交流的平台。

准备工作如下:

一.两张hbase表——fruit(有数据)和fruitresult(无数据),我们将使用mapreduce将hbase中的frult以可自定义的方式复制到fruitresult中


使用mapreduce复制hbase表


二.创建一个hbase工程,导入对应jar包 


使用mapreduce复制hbase表


代码如下:


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;

}

}

运行结果如下: 


使用mapreduce复制hbase表


除了hbase表之间的复制,还可以使用mapreduce从hdfs本地复制内容到hbase表中:使用MapReduce将Hadoop HDFS中的文件导入HBase 


使用mapreduce复制hbase表

猜你喜欢







想从事大数据方向发展的朋友,直接回复“资料”获取领取免费资料方式


使用mapreduce复制hbase表

免费资料:17310069471


潭州大数据公开课讲师整理的VIM编辑器常用命令视频


原文:https://blog.csdn.net/qq_39327985/article/details/84495261 


以上是关于使用mapreduce复制hbase表的主要内容,如果未能解决你的问题,请参考以下文章

使用 HBase 表作为 MapReduce 源

HBASE入门笔记

从 hadoop mapreduce 访问 hbase 表

hadoop中MapReduce配置

spark 写hbase

如何在MapReduce作业中使用HBase二级索引表作为输入?