package hip.ch4; import org.apache.avro.Schema; import org.apache.avro.file.DataFileWriter; import org.apache.avro.generic.GenericData; import org.apache.avro.generic.GenericDatumWriter; import org.apache.avro.generic.GenericRecord; 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.File; import java.io.IOException; import java.io.OutputStream; public class AvroAccountFilesWrite { public static final String FIELD_FILENAME = "filename"; public static final String FIELD_CONTENTS = "contents"; public static void writeToAvro(File srcPath, OutputStream outputStream) throws IOException { final Schema SCHEMA = Schema.parse( "{\"type\": \"record\", \"name\": \"Account\", " + "\"fields\": [" + "{\"name\":\"" + FIELD_FILENAME + "\", \"type\":\"string\"}," + "{\"name\":\"" + FIELD_CONTENTS + "\", \"type\":\"bytes\"}]}"); DataFileWriter<Object> writer = new DataFileWriter<Object>( new GenericDatumWriter<Object>()); writer.create(SCHEMA, outputStream); GenericRecord record = new GenericData.Record(SCHEMA); record.put("id", 12345); record.put("amount", 34.51); writer.append(record); IOUtils.cleanup(null, outputStream); } public static void main(String... args) throws Exception { Configuration config = new Configuration(); FileSystem hdfs = FileSystem.get(config); File sourceDir = new File(args[0]); Path destFile = new Path(args[1]); OutputStream os = hdfs.create(destFile); writeToAvro(sourceDir, os); } }