content: package hip.ch3.proto;
  
  import com.hadoop.compression.lzo.LzopCodec;
  import com.twitter.elephantbird.mapreduce.io.ProtobufBlockReader;
  import com.twitter.elephantbird.util.TypeRef;
  import org.apache.commons.lang.builder.ToStringBuilder;
  import org.apache.hadoop.conf.Configuration;
  import org.apache.hadoop.fs.FileSystem;
  import org.apache.hadoop.fs.Path;
  import org.apache.hadoop.io.IOUtils;
  
  import java.io.IOException;
  import java.io.InputStream;
  
  import static hip.ch3.proto.StockProtos.Stock;
  
  
  public class StockProtocolBuffersFileReader {
  
    public static void readFromProtoBuf(InputStream inputStream)
        throws IOException {
  
      ProtobufBlockReader<Stock> reader =
          new ProtobufBlockReader<Stock>(
              inputStream, new TypeRef<Stock>() {});
  
      Stock stock;
      while((stock = reader.readNext()) != null) {
        System.out.println(ToStringBuilder.reflectionToString(stock));
      }
  
      IOUtils.closeStream(inputStream);
    }
  
    public static void main(String... args) throws Exception {
      Configuration config = new Configuration();
      FileSystem hdfs = FileSystem.get(config);
  
      Path destFile = new Path(args[0]);
  
      LzopCodec codec = new LzopCodec();
      codec.setConf(config);
      InputStream is = codec.createInputStream(hdfs.open(destFile));
  
      readFromProtoBuf(is);
    }
  }
  