1、编写程序。
package chan.takchi.mr; import java.io.IOException; import java.util.List; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.Path; import org.apache.hadoop.hbase.Cell; import org.apache.hadoop.hbase.CellUtil; 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.hbase.util.Bytes; import org.apache.hadoop.io.Text; import org.apache.hadoop.mapreduce.Job; import org.apache.hadoop.mapreduce.Mapper; import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat; import org.apache.hadoop.mapreduce.lib.output.TextOutputFormat; public class ExportToHdfs { public static class NewMapper extends TableMapper<Text, Text>{ @Override //key是hbase中的行键 //value是hbase中的所行键的所有数据 protected void map(ImmutableBytesWritable key, Result value, Mapper<ImmutableBytesWritable, Result, Text, Text>.Context context) throws IOException, InterruptedException { Text v=null; String columns = ""; List<Cell> cs=value.listCells(); for(Cell cell:cs){ columns += new String(CellUtil.cloneValue(cell)) + "|"; System.out.println(new String(key.get()) + " -->> " + new String(CellUtil.cloneValue(cell))); } columns = columns.substring(0, columns.length()-1); context.write(new Text(key.get()), new Text(columns)); } } public static void main(String[] args) throws Exception { Configuration conf = HBaseConfiguration.create(); conf.set("hbase.zookeeper.quorum", "192.168.42.132,192.168.42.131,192.168.42.130"); Job job = Job.getInstance(conf, ExportToHdfs.class.getSimpleName()); job.setJarByClass(ExportToHdfs.class);//将此类打成jar包 job.setMapperClass(NewMapper.class); job.setMapOutputKeyClass(Text.class); job.setMapOutputValueClass(Text.class); job.setOutputFormatClass(TextOutputFormat.class); job.setNumReduceTasks(0); Scan scan=new Scan(); TableMapReduceUtil.initTableMapperJob(args[0], scan, NewMapper.class, Text.class, Text.class, job); FileOutputFormat.setOutputPath(job, new Path(args[1])); System.exit(job.waitForCompletion(true) ? 0 : 1); } }
2、导出为jar包,并把hbase的lib路径添加到HADOOP_CLASSPATH。
export HADOOP_CLASSPATH=/home/takchi/Bigdata/hbase-1.2.4/lib/*:$HADOOP_CLASSPATH
3、运行。
bin/hadoop jar /home/takchi/Desktop/_export.jar chan.takchi.mr.ExportToHdfs students /tmp/students_mr