4、Avro实现序列化的步骤

1、创建maven工程,引入pom文件(定义属性和依赖信息,以及定义Avro插件)

2、根据Avro插件的要求,更改maven工程结构,需要创建一个source/main/avro源目录

3、根据avro的schema(模式)要求,创建模式文件(放在新建的源目录中),写好之后

4、执行 run-->maven generator sources命令,通过avro插件生成模式文件对应的java类

5、将数据封装到java类中,然后通过avro的API进行序列化和反序列化操作

1)设置属性值的方法:1)通过java平常的API  2)借助newBuilder()和build()方法:new Student().newBuilder(stu1).setAge(21).build();

2)创建schema文件产生的要序列化的对象stu,并赋值

3)创建DatumWriter<>对象,DatumWriter dw = new SpecificDatumWriter<>();

4)创建DataFileWriter<>对象,DataFileWriter<> dfw = new DataFIleWriter<>(df);

5)创建序列化通道 dfw.create(schema,file);schema:被序列化对象的对应模式

File:将序列化对象写入到哪一个文件中

6)将对象序列化到指定的文件中

dfw.append(stu);

反序列化:

1)创建DatumReader<>对象,DatumReader dr= new SpecificDatumReader<>();

2)创建DataFileReader<>对象,DataFileReader<> dfr= new DataFIleReader<>(new File(“1.txt”),dr);

3)判断是否还有需要反序列化的内容

While(dfr.hasNext( ) ){ dfr.next()}

Avro序列化与反序列化的更多相关文章

  1. hadoop深入研究:(十六)——Avro序列化与反序列化

    转载请写明来源地址:http://blog.csdn.net/lastsweetop/article/details/9773233 所有源码在github上,https://github.com/l ...

  2. 如何使用maven进行avro序列化

    maven导入avro: <dependency> <groupId>org.apache.avro</groupId> <artifactId>avr ...

  3. Hadoop基础-序列化与反序列化(实现Writable接口)

    Hadoop基础-序列化与反序列化(实现Writable接口) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.序列化简介 1>.什么是序列化 序列化也称串行化,是将结构化 ...

  4. Hive之序列化与反序列化(SerDe)

    序列化与反序列化的作用 1,序列化是对象转化为字节序列的过程: 2,反序列化是字节码恢复为对象的过程: 序列化的作用主要有两个: (1),对象向的持久化:即把对象转换成字节码后保存文件: (2),对象 ...

  5. avro序列化详细操作

    Intellij 15.0.3 Maven avro 1.8.0 Avro是一个数据序列化系统. 它提供以下: 1 丰富的数据结构类型 2 快速可压缩的二进制数据形式 3 存储持久数据的文件容器 4 ...

  6. hive序列化和反序列化serde

    一.简介 SerDe是Serializer/Deserializer的缩写.SerDe允许Hive读取表中的数据,并将其以任何自定义格式写回HDFS. 任何人都可以为自己的数据格式编写自己的SerDe ...

  7. C# 序列化与反序列化几种格式的转换

    这里介绍了几种方式之间的序列化与反序列化之间的转换 首先介绍的如何序列化,将object对象序列化常见的两种方式即string和xml对象; 第一种将object转换为string对象,这种比较简单没 ...

  8. 使用Newtonsoft.Json.dll(JSON.NET)动态解析JSON、.net 的json的序列化与反序列化(一)

    在开发中,我非常喜欢动态语言和匿名对象带来的方便,JSON.NET具有动态序列化和反序列化任意JSON内容的能力,不必将它映射到具体的强类型对象,它可以处理不确定的类型(集合.字典.动态对象和匿名对象 ...

  9. Java 序列化与反序列化

    1.什么是序列化?为什么要序列化? Java 序列化就是指将对象转换为字节序列的过程,而反序列化则是只将字节序列转换成目标对象的过程. 我们都知道,在进行浏览器访问的时候,我们看到的文本.图片.音频. ...

随机推荐

  1. 通信导论-IP数据网络基础(1)

    TCP/IP封装过程: 端口号:服务器一般都是通过知名端口号(1~1023)来识别应用程序,(TCP)21.23.25,(UDP)53.69.161 TCP报文格式: 字节号:TCP把连接中发送的所有 ...

  2. redis缓存与数据库一致性问题

    一般来说,如果允许缓存可以稍微的跟数据库偶尔有不一致的情况,也就是说如果你的系统不是严格要求 “缓存+数据库” 必须保持一致性的话,最好不要做这个方案,即:读请求和写请求串行化,串到一个内存队列里去. ...

  3. java 基础 ----- Arrays 工具类

    -----  Arrays  工具类是一个比较方便的类 常用的方法 也可以通过jdk文档进行查看    右侧有偶 对一些比较常用的方法进行演示   直接放在main方法中进行测试 ----   equ ...

  4. [leetcode]66. Plus One加一

    Given a non-empty array of digits representing a non-negative integer, plus one to the integer. The ...

  5. MySQL主主

    MySQL双主(主主)架构方案   在企业中,数据库高可用一直是企业的重中之重,中小企业很多都是使用mysql主从方案,一主多从,读写分离等,但是单主存在单点故障,从库切换成主库需要作改动.因此,如果 ...

  6. ROS零门槛学渣教程系列(一)——ubuntu安装

    本教程使用虚拟机安装ubuntu 实验前准备:下载ubuntu系统镜像 本教程使用的是ubuntu14.04lts版本,有能力的读者可自行下载安装. 推荐使用本人制作的镜像,该镜像已安装好ROS.和配 ...

  7. linux 7 更改主机名

    1.在/etc/default/grub 中的GRUB_CMDLINE_LINUX 加上两条参数 #vim  /etc/default/grub GRUB_CMDLINE_LINUX="cr ...

  8. kubernetes + istio进行流量管理

    实验目的: 本文介绍如何通过istio实现域名访问k8s部署的nginx服务 前提: 已经安装了kubernetes的服务器 了解 kubernetes 基本命令如何使用 (kubectl creat ...

  9. spring-boot自定义favicon.ico文件

    一.将ico文件存放到resources目录的static中的favicon下. 二.在application.properties文件中增加配置 spring.mvc.favicon.enabled ...

  10. spark 线性回归算法(scala)

    构建Maven项目,托管jar包 数据格式 //0.fp_nid,1.nsr_id,2.gf_id,2.hydm,3.djzclx_dm,4.kydjrq,5.xgrq,6.je,7.se,8.jsh ...