avro的简单使用

和protobuf类似,在使用avro的时候首先需要进行编译,通过schema编译出对应的java类文件。
但是有一点好处是,可以直接在项目中进行编译,不用每次都使用命令行进行编译。
(可以对比一下protobuf,在使用protobuf的时候对schema文件要用protoc进行编译,然后放在工程里运行)

本文主要参考:
http://avro.apache.org/docs/current/gettingstartedjava.html

1、首先添加maven依赖:




    4.0.0

    com.xueyou.avro.demo
    avrodemo
    1.0-SNAPSHOT

    avrodemo
    
    http://www.example.com

    
        UTF-8
        1.7
        1.7
    

    
        
            junit
            junit
            4.11
            test
        
        
            org.apache.avro
            avro
            1.8.2
        
    

    
        
            
                org.apache.avro
                avro-maven-plugin
                1.8.2
                
                    
                        generate-sources
                        
                            schema
                        
                        
                            ${project.basedir}/src/main/avro
                            ${project.basedir}/src/main/java
                        
                    
                
            
        
        
            
                
                    maven-clean-plugin
                    3.0.0
                
                
                
                    maven-resources-plugin
                    3.0.2
                
                
                    maven-compiler-plugin
                    3.7.0
                
                
                    maven-surefire-plugin
                    2.20.1
                
                
                    maven-jar-plugin
                    3.0.2
                
                
                    maven-install-plugin
                    2.5.2
                
                
                    maven-deploy-plugin
                    2.8.2
                
            
        
    

2、然后我们需要定义一个.avsc的schema文件,user.avcs。
{"namespace": "com.xueyou.avro.demo",
 "type": "record",
 "name": "User",
 "fields": [
     {"name": "name", "type": "string"},
     {"name": "favorite_number",  "type": ["int", "null"]},
     {"name": "favorite_color", "type": ["string", "null"]}
 ]
}
这里需要说明的是namespace就是包名,name就是类名。
我们使用mvn compile命令进行编译,然后就能看到新生成的User.java类了。

avro的简单使用_第1张图片

这是现在的工程目录结构。


下面,我们简答的使用一下User类。
package com.xueyou.avro.demo;

/**
 * Hello world!
 */
public class App {
    public static void main(String[] args) {
        System.out.println("Hello World!");
        User user = User.newBuilder().setName("xiaoming")
                .setFavoriteNumber(12)
                .setFavoriteColor("blue")
                .build();
        User user2 = User.newBuilder().setName("xiaogang")
                .setFavoriteColor(null)
                .setFavoriteNumber(null)
                .build();
        System.out.println(user);
        System.out.println(user2);
    }
}
运行结果:
avro的简单使用_第2张图片


你可能感兴趣的:(avro)