通过MapReduce程序实现对hbase表数据的插入

import java.io.File;
import java.io.IOException;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.client.Put;
import org.apache.hadoop.hbase.io.ImmutableBytesWritable;
import org.apache.hadoop.hbase.mapreduce.TableMapReduceUtil;
import org.apache.hadoop.hbase.mapreduce.TableOutputFormat;
import org.apache.hadoop.hbase.util.Bytes;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.io.Writable;
import org.apache.hadoop.mapreduce.Job;
import org.apache.hadoop.mapreduce.Mapper;
import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
import org.apache.hadoop.mapreduce.lib.input.TextInputFormat;
public class LoadData{

  public static void main(String[] args) throws IOException{
    Configuration conf = HBaseConfiguration;
    conf.set("hbase.zookeeper.quorum","172.17.199.4, 172.17.199.14, 172.17.199.16");//设置zookeeper集群
    conf.set("hbase.zookeeper.property.clientPort","2181");//设置zookeeper服务端口
    Job job = null;
    try{
        job = new Job(conf,"load");
        job.setJarByClass(LoadData.class);
        job.setMapperClass(LoadDataMapper.class);
        job.setInputFormatClass(TextInputFormat.class);
        FileInputFormat.addInputPath(job,new Path("hdfs://172.17.199.14:8020/BANK_DATA.txt"));
        TableMapReduceUtil.initTableReducerJob("bbb",null,job);
        job.setNumReduceTasks(0);
        TableMapReduceUtil.addDependencyJars(job);
        job.waitForCompletion(true);
    }catch(IOException e){
        e.printStackTrace();
    }catch(ClassNotFoundException e){
        e.printStackTrace();
    }catch(InterruptedException e){
        e.printStackTrace();
    }
  }
 
  public static class LoadDataMapper extends Mapper<Object,Text,ImmutableBytesWritable,Put>{
    public void map(Object key,Text value,Context context)throws IOException,InterruptedException{
        String[] st = value.toString().split("\t");
        ImmutableBytesWritable rowkey = new ImmutableBytesWritable(Bytes.toBytes(st[0]));
        Put p = new Put(Bytes.toBytes(st[0]));
        p.add(Bytes.toBytes("info"),Bytes.toBytes("bank_id"),Bytes.toBytes(st[1]));
        p.add(Bytes.toBytes("info"),Bytes.toBytes("bank_name"),Bytes.toBytes(st[2]));
        p.add(Bytes.toBytes("info"),Bytes.toBytes("area_id"),Bytes.toBytes(st[3]));
        p.add(Bytes.toBytes("info"),Bytes.toBytes("bank_type"),Bytes.toBytes(st[4]));
        context.write(rowkey,p);
    }
  }

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值