package org.hdp.practice.serial; import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import org.apache.avro.file.DataFileReader; import org.apache.avro.file.DataFileWriter; import org.apache.avro.io.DatumReader; import org.apache.avro.io.DatumWriter; import org.apache.avro.specific.SpecificDatumReader; import org.apache.avro.specific.SpecificDatumWriter; public class Avro { public static void main(String[] args) throws Exception{ // readAvro (); //writeJavaObject(); readWriteableObject(); } static void writeWriteableObject() throws Exception{ FileOutputStream fos = new FileOutputStream("D:/tmp/users.wobj"); DataOutputStream dos = new DataOutputStream(fos); MyUser user1 = new MyUser(); user1.setName("Alyssa"); user1.setFavoriteNumber(256); user1.setFavoriteColor("yellow"); user1.write(dos); MyUser user2 = new MyUser("Ben", 7, "red"); user2.write(dos); dos.close(); fos.close(); } static void readWriteableObject() throws Exception{ FileInputStream fis = new FileInputStream("D:/tmp/users.wobj"); DataInputStream dis = new DataInputStream(fis); MyUser user1 = new MyUser(); user1.readFields(dis); System.out.println(user1); MyUser user2 = new MyUser(); user2.readFields(dis); System.out.println(user2); dis.close(); } static void writeJavaObject() throws Exception{ User user1 = new User(); user1.setName("Alyssa"); user1.setFavoriteNumber(256); User user2 = new User("Ben", 7, "red"); User user3 = User.newBuilder() .setName("Charlie") .setFavoriteColor("blue") .setFavoriteNumber (null) .build(); FileOutputStream fos = new FileOutputStream("D:/tmp/users.jobj"); ObjectOutputStream oos = new ObjectOutputStream(fos); oos.writeObject (user1); oos.writeObject (user2); oos.writeObject(user3); oos.close(); fos.close(); } static void readJavaObject() throws Exception{ FileInputStream fis = new FileInputStream("D:/tmp/users.jobj"); ObjectInputStream ois = new ObjectInputStream(fis); User user = (User)ois.readObject(); System.out.println(user); User user1 = (User)ois.readObject(); System.out.println(user1); User user2 = (User)ois.readObject(); System.out.println(user2); ois.close(); fis.close(); } static void writeAvro() throws Exception{ User user1 = new User(); user1.setName("Alyssa"); user1.setFavoriteNumber(256); User user2 = new User("Ben", 7, "red"); User user3 = User.newBuilder() .setName("Charlie") .setFavoriteColor("blue") .setFavoriteNumber (null) .build(); DatumWriter<User> userDatumWriter = new SpecificDatumWriter<User>(User.class); DataFileWriter<User> dataFileWriter = new DataFileWriter<User>(userDatumWriter); dataFileWriter.create(user1.getSchema(), new File("D:/tmp/users.avro")); dataFileWriter.append(user1); dataFileWriter.append(user2); dataFileWriter.append(user3); dataFileWriter.close(); } static void readAvro() throws Exception{ File file = new File("D:/tmp/users.avro"); DatumReader<User> userDatumReader = new SpecificDatumReader<User>(User.class); DataFileReader<User> dataFileReader = new DataFileReader<User>(file, userDatumReader); User user = null; while (dataFileReader.hasNext()) { user = dataFileReader.next(user); System.out.println(user); } dataFileReader.close(); } }