User user1 = new User();user1.setName("Alyssa");user1.setFavoriteNumber(256);// Leave favorite col or null// Alternate constructorUser user2 = new User("Ben", 7, "red");// Construct via builderUser user3 = User.newBuilder() .setName("Charlie") .setFavoriteColor("blue") .setFavoriteNumber(null) .build();// Serialize user1, user2 and user3 to diskDatumWriter userDatumWriter = new SpecificDatumWriter(User.class);DataFileWriter dataFileWriter = new DataFileWriter(userDatumWriter);dataFileWriter.create(user1.getSchema(), new File("user_generic.avro"));dataFileWriter.append(user1);dataFileWriter.append(user2);dataFileWriter.append(user3);dataFileWriter.close();
// Deserialize Users from diskDatumReader userDatumReader = new SpecificDatumReader(User.class);DataFileReader dataFileReader = new DataFileReader(new File("user_generic.avro"), userDatumReader);User user = null;while (dataFileReader.hasNext()) { // Reuse user object by passing it to next(). This saves us from // allocating and garbage collecting many objects for files with // many items. user = dataFileReader.next(user); System.out.println(user);}