`

apache avro 简介

 
阅读更多

 

 

1 rpc简介:

a) 远程过程调用,本质是不同机器之间socket通讯

b) 具体实现产品:rmi   xml-rpc   avro-rpc 等,

   前两者使用时,实现比较复杂,并且相同数据量下序列化后的数量较大 影响机器之间的传输速度

c) rpc数据序列化在Hadoop圈子中比较出名的两个工具:
   apache avro和google的protocol buffer 

  前者在Hadoop1中使用到, 后者在Hadoop2中使用到
   此两者都支持多语言,传输数据速率也快,但是前者使用maven能直接生成代码,

   后者生成代码麻烦使用自己工具还需要手工挪动

 

2 apache avro学习地址:
http://avro.apache.org/docs/current/gettingstartedjava.html

 apache avro是说在rpc通讯时,使用avro这种数据序列化系统方式来实现数据传输

3 apache avro specification:

  

a) avro的规范 ,用于定义好序列化的格式

b) 写法解释:

 user.avsc:   定义avro记录 文件结尾后缀为 .avsc	  
{"namespace": "example.avro",  定义包名
 "type": "record",             定义类型 类比于Java的 interface class等形式
 "name": "User",               定义类名
 "fields": [                   定义属性
     {"name": "name", "type": "string"},   类比于  String name
     {"name": "favorite_number",  "type": ["int", "null"]}, 类比于 数组名favorite_number,数组值["int", "null"]
     {"name": "favorite_color", "type": ["string", "null"]} 类比于 数组名favorite_color,数组值["string", "null"]
 ]
}	 

 

c) 如果定义更复杂格式的,参看: http://avro.apache.org/docs/current/spec.html#schema_primitive

 

d) avro序列化数据和java.io.serilized的区别:
avro ---> 顺丰
java.io.serilized  ---> 平邮

 

 

4) 使用MAVEN生成user.avsc文件对应的Java对象:

 

a) eclipse内创建maven工程

b) 在pom.xml内增加 avro依赖和avro build文件:

<dependency>
			<groupId>org.apache.avro</groupId>
			<artifactId>avro</artifactId>
			<version>1.7.7</version>
		</dependency>
		<dependency>
			<groupId>org.apache.avro</groupId>
			<artifactId>avro-ipc</artifactId>
			<version>1.7.7</version>
		</dependency>



<build>
		<plugins>
			<plugin>
				<groupId>org.apache.avro</groupId>
				<artifactId>avro-maven-plugin</artifactId>
				<version>1.7.7</version>
				<executions>
					<execution>
						<phase>generate-sources</phase>
						<goals>
							<goal>schema</goal> 指定generate-sources生成方式格式参看schema格式
						</goals>
						<configuration>
							<sourceDirectory>${project.basedir}/src/main/avro/</sourceDirectory>
							<outputDirectory>${project.basedir}/src/main/java/</outputDirectory>
						</configuration>
					</execution>
				</executions>
			</plugin>
			<!-- compiler插件, 设定JDK版本 -->
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-compiler-plugin</artifactId>
				<version>2.3.2</version>
				<configuration>
					<encoding>UTF-8</encoding>
					<source>1.6</source>
					<target>1.6</target>
					<showWarnings>true</showWarnings>
				</configuration>
			</plugin>
		</plugins>
	</build>

 

c) 创建文件夹,注意是文件夹

src/main/avro/

将创建的user.avsc拷贝在里面去,保证文件夹内只有这一个文件,这样在生成代码时,

就会只将此文件生成JavaBean

这块配置在如下文件中体现到:

 <configuration>
        <sourceDirectory>${project.basedir}/src/main/avro/</sourceDirectory>
        <outputDirectory>${project.basedir}/src/main/java/</outputDirectory>
      </configuration>

 

e) 工程右键/run as/8Maven generate-sources 生成代码;

此时在src/main/java/example.avro下生成Java类 User,打开如下:

/**
 * Autogenerated by Avro
 * 
 * DO NOT EDIT DIRECTLY
 */
package example.avro;  
@SuppressWarnings("all")
........

 

 

 

f) 测试如下:

	public static void main(String[] args) {
		
		User user = new User("zm",30,"red");
		System.out.println(user);
	}

{"name": "zm", "favorite_number": 30, "favorite_color": "red"}

 

 

上述案例和介绍参考官网链接http://avro.apache.org/docs/current/gettingstartedjava.html

 

工程代码见附件:

 

分享到:
评论

相关推荐

    Apache Avro

    Apache Avro™ is a data serialization system. To learn more about Avro, please read the current documentation. To download Avro, please visit the releases page. Developers interested in getting more ...

    Apache Avro RPC简单示例

    Apache Avro是一个面向数据序列化的开源框架,由Apache软件基金会开发,主要应用于大数据处理和分布式系统。它提供了高效的、跨语言的数据交换格式和API,特别适合远程过程调用(RPC)以及存储和处理大规模数据集。...

    ApacheAvro纯JavaScript实现avsc.zip

    avsc 是 Apache Avro 的纯 JavaScript 实现。特性:完整的 Avro 架构支持,包括递归架构, sort order, 以及 schema evolution.快速!速度相当于 JSON 的两倍,同时更少的编码(varies per schema).无依赖, avsc 甚至...

    avro-rpc-quickstart:Apache Avro RPC快速入门

    什么是Apache Avro? 来自:“ Avro是数据序列化系统” Avro提供: 丰富的数据结构。 一种紧凑,快速的二进制数据格式。 容器文件,用于存储持久性数据。 远程过程调用(RPC)。 与动态语言的简单集成。 读取或写入...

    avro-example:这是一个简短的练习,用于举例说明使用 Java 使用 Apache Avro:trade_mark:

    avro-example ## 示例:使用 Java 的 Apache Avro Apache Avro:trade_mark: 是一个数据序列化系统。 这是一个简短的练习,用于举例说明如何使用 Java 来使用 Apache Avro:trade_mark:。 文档:

    avro-1.8.1

    运行Sqoop报错:Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/avro/LogicalType,下载此资源放到Sqoop的lib目录下即可

    avro-schema:适用于Tarantool的Apache Avro模式工具

    Apache Avro模式工具用于Tarantool的模式工具,从零开始在Lua中实现。 显着特点: Avro默认值; Avro别名; 由于运行时代码生成,数据转换速度很快; 扩展,例如内置的可为空的类型。avro_schema = require ( ' avro...

    test_avro:在 spring 中使用 apache avro

    test_avro 使用 jetty 和 apache avro 进行 Spring Boot 概念验证 使用 jetty 运行 spring boot 项目: mvn spring-boot: run Avro 的概念证明在测试中,所以使用:mvn test 结尾。-

    avro-in-action:RPC与Apache Avro示例

    Apache Avro是Hadoop生态系统中的一个关键组件,它主要用于数据序列化和远程过程调用(RPC)。这个"avro-in-action: RPC与Apache Avro示例"项目显然旨在帮助开发者理解如何在实际应用中利用Avro进行高效的数据交互。...

    go-avro:适用于Golang的Apache Avro

    适用于Golang的Apache Avro 请注意,该项目仍处于早期测试阶段,可能会随时更改。 安装很简单,如下所示: go get github.com/elodina/go-avro 一些用法示例位于: go-avro现在还支持从Avro模式生成代码,该模式...

    avro:Apache Avro是一个数据序列化系统

    Apache Avro:trade_mark: Apache Avro:trade_mark:是一个数据序列化系统。 要了解有关Avro的更多信息,请访问我们的网站: 要为Avro做出贡献,请阅读:

    LearnAvro:Apache avro 示例

    Apache Avro:trade_mark: 是一个数据序列化系统。 有关更多信息,请参阅此。 你能在这个项目中找到什么? 1.如何序列化java对象并存入文件 2.如何从文件中检索对象 3.如何将你的对象转化为字节流,然后你可以...

    flink-avro-1.10.0-API文档-中文版.zip

    标签:flink、apache、avro、jar包、java、API文档、中文版; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,...

    avro-1.8.2-API文档-中英对照版.zip

    Maven坐标:org.apache.avro:avro:1.8.2; 标签:apache、avro、中英对照文档、jar包、java; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构...

    avro-1.10.0-API文档-中英对照版.zip

    Maven坐标:org.apache.avro:avro:1.10.0; 标签:apache、avro、中英对照文档、jar包、java; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和...

    avro-1.8.2-API文档-中文版.zip

    Maven坐标:org.apache.avro:avro:1.8.2; 标签:apache、avro、中文文档、jar包、java; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持...

    avro-1.11.0-API文档-中文版.zip

    Maven坐标:org.apache.avro:avro:1.11.0; 标签:apache、avro、jar包、java、API文档、中文版; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和...

Global site tag (gtag.js) - Google Analytics