hbase数据导入到hdfs,主要是通过TableMapper实现读取hbase表数据,写入hdfs目录,话不多说,直接上的代码(亲测可用)

package com.test.transform;
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.Result;
 import org.apache.hadoop.hbase.client.Scan;
 import org.apache.hadoop.hbase.io.ImmutableBytesWritable;
 import org.apache.hadoop.hbase.mapreduce.TableMapReduceUtil;
 import org.apache.hadoop.hbase.mapreduce.TableMapper;
 import org.apache.hadoop.io.Text;
 import org.apache.hadoop.mapreduce.Job;
 import org.apache.hadoop.mapreduce.Reducer;
 import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;/**
  * @ClassName: HbaseToHdfs
  * @Description: hbase全表数据导入hdfs
  * @author gy
  * @date 2018年7月13日 下午3:59:11
  *
  */
 public class HbaseToHdfs {
     public static void main(String[] args) throws IOException, ClassNotFoundException, InterruptedException {        String tablename = "mr:test";// 表名字
         String outputpath = "hdfs://IP地址/output";//输出路径
         Configuration conf = HBaseConfiguration.create();
         conf.set("hbase.zookeeper.quorum", "zookeeper IP地址");
         conf.set("hbase.zookeeper.property.clientPort", "端口号");
         conf.set("zookeeper.znode.parent", "/hbase");        Job job = Job.getInstance(conf, "HbaseToHdfs");
         job.setJarByClass(HbaseToHdfs.class);
         Scan scan = new Scan();
         TableMapReduceUtil.initTableMapperJob(tablename, scan, doMapper.class, Text.class, Text.class, job);
         job.setReducerClass(WordCountHbaseReaderReduce.class);
         FileOutputFormat.setOutputPath(job, new Path(outputpath));
         System.exit(job.waitForCompletion(true) ? 0 : 1);
     }    public static class doMapper extends TableMapper<Text, Text> {
         protected void map(ImmutableBytesWritable key, Result value, Context context)
                 throws IOException, InterruptedException {
             // 获取对应的字段
             String TOWNSHIP = new String(value.getValue("ColumnFamily1".getBytes(), "TOWNSHIP".getBytes()), "utf-8");
             
             context.write(new Text(""), new Text(TOWNSHIP));
         }
     }
     
     public static class WordCountHbaseReaderReduce extends Reducer<Text, Text, Text, Text> {
         private Text result = new Text();        protected void reduce(Text key, Iterable<Text> values, Context context)
                 throws IOException, InterruptedException {
             for (Text val : values) {
                 result.set(val);
                 context.write(key, result);
             }
         }
     }
 }