java avro串行化反串行化 方法1

news/2023/9/29 1:38:19

avsc文件模板

{"namespace": "com.twq.spark.rdd","type": "record","name": "Dog","fields": [{"name": "name", "type": "string"},{"name": "favorite_number",  "type": ["int", "null"]},{"name": "favorite_color", "type": ["string", "null"]}]
}

1 在命令行使用avro-tools.jar为avsc文件生成java类文件

java -jar avro-tools-1.8.2.jar compile schema dog.avsc java .

2 将上面生成的java类文件放入在项目中

3 项目添加maven依赖

<dependency><groupId>org.apache.avro</groupId><artifactId>avro</artifactId><version>1.8.2</version>
</dependency>

4 串行化 生成avro文件

// 声明并初始化Dog对象// 方式一Dog user1 = new Dog();user1.setName("zhangsan");user1.setFavoriteNumber(21);user1.setFavoriteColor(null);// 方式二 使用构造函数// Alternate constructorDog user2 = new Dog("Ben", 7, "red");// 方式三,使用Build方式// Construct via builderDog user3 = Dog.newBuilder().setName("Charlie").setFavoriteColor("blue").setFavoriteNumber(null).build();String path = "C:\\Users\\need\\Desktop\\新建文件夹 (2)\\avro_file\\dog.avro"; // avro文件存放目录DatumWriter<Dog> userDatumWriter = new SpecificDatumWriter<Dog>(Dog.class);DataFileWriter<Dog> dataFileWriter = new DataFileWriter<Dog>(userDatumWriter);dataFileWriter.create(user1.getSchema(), new File(path));
// 把生成的user对象写入到avro文件dataFileWriter.append(user1);dataFileWriter.append(user2);dataFileWriter.append(user3);dataFileWriter.close();

5 解析 avro文件

DatumReader<Dog> reader = new SpecificDatumReader<Dog>(Dog.class);DataFileReader<Dog> dataFileReader = new DataFileReader<Dog>(new File("C:\\Users\\need\\Desktop\\新建文件夹 (2)\\avro_file\\dog.avro"), reader);Dog user = null;while (dataFileReader.hasNext()) {user = dataFileReader.next();System.out.println(user);}

 


https://dhexx.cn/news/show-19171.html

相关文章

macbook python安装教程_Mac book安装WPS零基础教程

很多小伙伴在入手苹果电脑后&#xff0c;在办公过程中使用苹果电脑自带的办公软件有些不习惯。鉴于很多人群习惯于使用WPS。今天给大家分享如何给Mac安装WPS&#xff0c;拿好小本本开始记哦&#xff01;图文教程&#xff1a;1、打开苹果自带浏览器&#xff0c;使用百度搜索“WP…

JQ获取当前触发事件控件ID

或者直接在事件函数里面传this.id也能获取到传的就是当前控件ID名称转载于:https://www.cnblogs.com/liziqiang/p/3445612.html

POJ 3216 最短路径匹配+floyd

题意&#xff1a; 给出Q的街道和M个任务 然后给出i*j的矩阵..表示第i个街道到第j个街道的距离 其中-1表示不可到达 然后接下来M行有 p t d 表示 任务在p街道 开始时间是t 完成工作花费时间是d 问最少派出多少人可以完成M个任务 思路&#xff1a; 用floyd求出街道之间的最短距离…

哈斯机床进去debug模式_电机行业:离散型制造模式下的企业盈利难,这些技术统统解决!...

电机行业&#xff1a;离散型制造模式下的企业盈利难&#xff0c;这些技术统统解决&#xff01;我国电机行业运维难度越来越大&#xff0c;系统维护费用高、收益低、风险大。电机行业在我国属于典型的离散型制造模式。我国电机行业系统繁多&#xff0c;系统间无数据接口&#xf…

hadoop job 命令_Hadoop 系列之 MapReduce

写在前面的一天&#xff0c;老师给小胖安排了一个任务&#xff1a;把前十天的数据统计一下&#xff0c;排个序&#xff0c;并且这十天的数据存在不同的机器上面。这可把小胖难为坏了...&#xff0c;老师只给了他一个提示--「分布式」&#xff0c;小胖心想:“分布式程序咋写啊&a…

android todo,推荐两款Todo类Android应用:高效Todo和Any.do

8种机械键盘轴体对比本人程序员&#xff0c;要买一个写代码的键盘&#xff0c;请问红轴和茶轴怎么选&#xff1f;我一直在寻找一款这样的Android应用&#xff1a;首先&#xff0c;他的界面要足够简约&#xff0c;我不喜欢花里胡哨和乱七八糟的 UI&#xff1b;第二&#xff0c;添…

JS获取屏幕高度(转)

IE中&#xff1a; document.body.clientWidth > BODY对象宽度 document.body.clientHeight > BODY对象高度 document.documentElement.clientWidth > 可见区域宽度 document.documentElement.clientHeight > 可见区域高度 FireFox中&#xff1a; document.body.cli…

麦克纳姆轮运动原理怎么安装_滚筒洗衣机排水管怎么安装 滚筒洗衣机原理介绍【详解】...

洗衣机在生活中对于大家来说并不陌生&#xff0c;因为洗衣机已经走进了千家万户&#xff0c;滚筒洗衣机就是其中一款。我们在使用滚筒洗衣机的时候一定要注意&#xff0c; 滚筒洗衣机排水管安装 &#xff0c;如果没有排水管是排不出水的&#xff0c;所以洗衣机排水管是非常重…

设置Eclipse的Maven库

Maven 到底是什么 看这个 http://www.cnblogs.com/dcba1112/archive/2011/05/01/2033805.html 安装完 m2e 插件 其实 Eclipse 自带了一个 Maven库 具体配置参照&#xff1a; http://b-l-east.iteye.com/blog/1194540 修改上图 的 conf\settings.xml 文件 设置本地Maven库存储路…

android 剪切大图,Android大图裁剪解决办法

某些功能需要拍照或者从相册选择照片后经过裁剪再上传的时候&#xff0c;cropp_w_picpath可以调用手机自带的com.android.camera.action.CROP这个Intent进行裁剪通过设置输出大小可以得到图片的大小&#xff1a;intent.putExtra(“outputX”, outputX);intent.putExtra(“outpu…