一、新建maven工程
二、导入pom依赖、插件
junit
junit
4.12
org.apache.avro
avro
1.8.2
org.apache.avro
avro-tools
1.8.2
org.apache.avro
avro-maven-plugin
1.8.2
org.apache.avro
avro-compiler
1.8.2
org.apache.avro
avro-ipc
1.8.2
org.apache.maven.plugins
maven-compiler-plugin
3.1
1.8
1.8
UTF-8
org.apache.avro
avro-maven-plugin
1.8.2
generate-sources
schema
${project.basedir}/src/main/avro/
${project.basedir}/src/main/java/
org.apache.maven.plugins
maven-compiler-plugin
1.8
1.8
三、在${project.basedir}/src/main/avro/下新建User.avsc文件
编辑User.avsc文件
{"namespace":"com.blb","type":"record","name":"User","fields":
[
{"name":"username","type":"string"},
{"name":"age","type":"int"}
]
}
四、编译
方式1、可以在maven下的Lifesycle里双击compile
方式2、选中pom.xml文件,右键,选择Maven,点击 generate Resources and Update Folders
编译成功后会在Java下生成User类
五、实例
新建测试类
packagecom.blb;import staticorg.junit.Assert.assertTrue;importorg.apache.avro.file.DataFileReader;importorg.apache.avro.file.DataFileWriter;importorg.apache.avro.io.DatumReader;importorg.apache.avro.io.DatumWriter;importorg.apache.avro.specific.SpecificDatumReader;importorg.apache.avro.specific.SpecificDatumWriter;importorg.junit.Test;importjava.io.File;public classAppTest
{//序列化示例
@Testpublic void write() throwsException{
User u1= new User("Ken Tompson",194375);
User u2= new User("丹尼斯·里奇",194170);
DatumWriter dw = new SpecificDatumWriter<>(User.class);
DataFileWriter dfw = new DataFileWriter<>(dw);//创建底层的文件输出通道//schema - 序列化类的模式//path - 文件路径
dfw.create(u1.getSchema(),new File("d://1.txt"));//把对象数据写到文件中
dfw.append(u1);
dfw.append(u2);
dfw.close();
}//反序列化示例
@Testpublic void read()throwsException {
DatumReader dr = new SpecificDatumReader<>(User.class);
DataFileReader dfr = new DataFileReader(new File("d://1.txt"), dr);//--通过迭代器,迭代出对象数据
while(dfr.hasNext()) {
System.out.println(dfr.next());
}
}
}