maven依赖avro_如何使用maven进行avro序列化

本文介绍了如何在Maven项目中导入和配置Avro依赖,通过Avro插件生成序列化代码,并展示了Java如何进行Avro的序列化和反序列化操作。详细步骤包括设置Avro插件、创建数据schema、以及执行序列化和反序列化操作的代码示例。
摘要由CSDN通过智能技术生成

maven导入avro:

org.apache.avro

avro

1.7.7

maven导入avro的构建插件:

org.apache.avro

avro-maven-plugin

1.7.7

generate-sources

schema

protocol

idl-protocol

${project.basedir}/src/main/avro/

${project.basedir}/src/main/java/

org.apache.maven.plugins

maven-compiler-plugin

1.7

1.7

在${project.basedir}/src/main/avro/ 下导入json文件,就是所谓的数据schema

{

"namespace":"user_machine_learning",

"type":"record",

"name":"product",

"fields":[

{"name":"product_id","type":"string","default":"null"},

{"name":"company_name","type":"string","default":"null"},

{"name":"product_info","type":"string","default":"null"},

{"name":"direction","type":"string","default":"null"}

]

}

maven和schema构建好之后需要进行install,然后就会在 ${project.basedir}/src/main/avro/ 目录下产生构建好的序列化代码,这个代码只需要使用java进行调用即可

使用java进行序列化和反序列化的操作:

public class Test_avro {

public static void main(String[] args) throws IOException {

//TODO 序列化操作

product pro = product.newBuilder().build();

pro.setProductId("1");

pro.setCompanyName("这是一个测试");

pro.setProductInfo("测试的详细说明");

pro.setDirection("1");

//将生成的数据保存到本地文件中

File file = new File("/Users/niutao/Desktop/avro_test/user.avro");

DatumWriter productDatumWriter = new SpecificDatumWriter(product.class);

DataFileWriter dataFileWriter = new DataFileWriter(productDatumWriter);

dataFileWriter.create(product.getClassSchema() , file);

dataFileWriter.append(pro);

dataFileWriter.close();

//TODO 反序列

DatumReader productDatumReader = new SpecificDatumReader(product.class);

DataFileReader productDataFileReader = new DataFileReader(file , productDatumReader);

product pro_reader = null;

while (productDataFileReader.hasNext()){

pro_reader = productDataFileReader.next();

System.out.println(pro_reader);

}

}

}

Avro序列化与反序列化

4.Avro实现序列化的步骤 1.创建maven工程,引入pom文件(定义属性和依赖信息,以及定义Avro插件) 2.根据Avro插件的要求,更改maven工程结构,需要创建一个source/main ...

avro序列化详细操作

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

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

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

Kafka 生产消费 Avro 序列化数据

https://unmi.cc/kafka-produce-consume-avro-data/ https://unmi.cc/apache-avro-serializing-deserializi ...

序列化之protobuf与avro对比(Java)

最近在做socket通信中用到了关于序列化工具选型的问题,在调研过程中开始趋向于用protobuf,可以省去了编解码的过程.能够实现快速开发,且只需要维护一份协议文件即可. 但是调研过程中发现了pro ...

Hadoop基础-Apache Avro串行化的与反串行化

Hadoop基础-Apache Avro串行化的与反串行化 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.Apache Avro简介 1>.Apache Avro的来源 ...

Kafka Schema Registry | 学习Avro Schema

1.目标 在这个Kafka Schema Registry教程中,我们将了解Schema Registry是什么以及为什么我们应该将它与Apache Kafka一起使用.此外,我们将看到Avro架构演 ...

常见的序列化框架及Protobuf序列化原理

原文链接:https://www.jianshu.com/p/657fbf347934 https://www.cnblogs.com/javazhiyin/p/11375553.html https ...

Flink资料(4) -- 类型抽取和序列化

类型抽取和序列化 本文翻译自Type Extraction and Serialization Flink处理类型的方式比较特殊,包括它自己的类型描述,一般类型抽取和类型序列化框架.该文档描述这些概念 ...

随机推荐

iOS Swift-简单值(The Swift Programming Language)

iOS Swift-简单值(The Swift Programming Language) 常量的声明:let 在不指定类型的情况下声明的类型和所初始化的类型相同. //没有指定类型,但是初始化的值为 ...

【转载】Unix Shell中用[-n]判断字符串不为NULL

转载自:http://blog.sina.com.cn/s/blog_541086430100mosm.html 在Unix Shell中,可以使用-n来判断一个string不是NULL值,但是之前却 ...

PayPal 开发详解(三):在网站上创建【立即付款】按钮

1.使用[商家帐号]登录https://www.sandbox.paypal.com/ 2.点击[用户信息]->[其他选项]->[我保存的按钮] 3.选择[立即购买按钮事例] 4.[第一步 ...

codeforces Good Bye 2013 379D New Year Letter

题目链接:http://codeforces.com/problemset/problem/379/D [题目大意] 告诉你初始字符串S1.S2的长度和递推次数k, 使用类似斐波纳契数列的字符串合并的 ...

cf 363D

贪心加二分 虽然比赛后才过 ........ /************************************************************************* &g ...

HDOJ(HDU) 1678 Shopaholic

Problem Description Lindsay is a shopaholic. Whenever there is a discount of the kind where you can ...

在 CentOS7 安装 ELK

ELK是一个成熟的日志系统,主要功能有收集.分析.检索,详细见 elastic官网. 本文主要介绍如何在CentOS7下安装最新版本的ELK,当然现在docker已经有完全配置成功的elk容器,安装配 ...

Emmet 记录

Refs 熟悉 css 有优势,emmet 的的缩写语法特别像 css 选择器. =>参考本博笔记 # id > 直接子元素 child . class + Sibling 同级相邻的一个 ...

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值