content: package hip.ch5.hbase;
  
  import hip.ch3.avro.gen.Stock;
  import hip.util.Cli;
  import hip.util.CliCommonOpts;
  import org.apache.commons.lang.builder.ToStringBuilder;
  import org.apache.commons.lang.builder.ToStringStyle;
  import org.apache.hadoop.conf.Configuration;
  import org.apache.hadoop.conf.Configured;
  import org.apache.hadoop.fs.Path;
  import org.apache.hadoop.hbase.client.Result;
  import org.apache.hadoop.hbase.io.ImmutableBytesWritable;
  import org.apache.hadoop.hbase.mapreduce.ResultSerialization;
  import org.apache.hadoop.io.SequenceFile;
  import org.apache.hadoop.util.Tool;
  import org.apache.hadoop.util.ToolRunner;
  
  public class ExportedReader extends Configured implements Tool {
    /**
     * Main entry point for the example.
     *
     * @param args arguments
     * @throws Exception when something goes wrong
     */
    public static void main(final String[] args) throws Exception {
      int res = ToolRunner.run(new Configuration(), new ExportedReader(), args);
      System.exit(res);
    }
  
    /**
     * Read sequence file from HDFS created by HBase export.
     *
     * @param args the command-line arguments
     * @return the process exit code
     * @throws Exception if something goes wrong
     */
    public int run(final String[] args) throws Exception {
  
      Cli cli = Cli.builder().setArgs(args).addOptions(CliCommonOpts.InputFileOption.values()).build();
      int result = cli.runCmd();
  
      if (result != 0) {
        return result;
      }
  
      Path inputFile = new Path(cli.getArgValueAsString(CliCommonOpts.InputFileOption.INPUT));
  
      Configuration conf = super.getConf();
  
      conf.setStrings("io.serializations", conf.get("io.serializations"),
          ResultSerialization.class.getName());
  
      SequenceFile.Reader reader =
          new SequenceFile.Reader(conf, SequenceFile.Reader.file(inputFile));
  
      HBaseScanAvroStock.AvroStockReader stockReader =
          new HBaseScanAvroStock.AvroStockReader();
  
      try {
        ImmutableBytesWritable key = new ImmutableBytesWritable();
        Result value = new Result();
  
        while (reader.next(key)) {
          value = (Result) reader.getCurrentValue(value);
          Stock stock = stockReader.decode(value.getValue(
              HBaseWriter.STOCK_DETAILS_COLUMN_FAMILY_AS_BYTES,
              HBaseWriter.STOCK_COLUMN_QUALIFIER_AS_BYTES));
          System.out.println(new String(key.get()) + ": " +
          ToStringBuilder
                .reflectionToString(stock, ToStringStyle.SIMPLE_STYLE));
        }
      } finally {
        reader.close();
      }
      return 0;
    }
  }
  