maven依赖avro_maven实现avro序列化

一、新建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());

}

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值