package com.manning.hip.ch3.avro;
import com.manning.hip.ch3.avro.gen.Stock;
import org.apache.avro.file.DataFileStream;
import org.apache.avro.specific.SpecificDatumReader;
import org.apache.commons.lang.builder.ToStringBuilder;
import org.apache.commons.lang.builder.ToStringStyle;
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;
public class AvroStockFileRead {
public static void readFromAvro(InputStream is) throws IOException {
DataFileStream<Stock> reader = //<co id="ch03_smallfileread_comment1"/>
new DataFileStream<Stock>(
is,
new SpecificDatumReader<Stock>(Stock.class));
for (Stock a : reader) { //<co id="ch03_smallfileread_comment2"/>
System.out.println(ToStringBuilder.reflectionToString(a,
ToStringStyle.SIMPLE_STYLE
));
}
IOUtils.closeStream(is);
IOUtils.closeStream(reader);
}
public static void main(String... args) throws Exception {
Configuration config = new Configuration();
FileSystem hdfs = FileSystem.get(config);
Path destFile = new Path(args[0]);
InputStream is = hdfs.open(destFile);
readFromAvro(is);
}
}