AVRO avdl文件生成

时间:2013-02-06 17:46:44

标签: java hadoop avro

我将人员记录定义为Avro IDL( person.avdl ):

@namespace("net.tzolov.avro.extend")
protocol PersonProtocol {
    record Person {
        string firstName;
        string lastName;
    }     
}

我正在生成java文件,因此这个文件正在生成PersonProtocol.java和Person.java。 PersonProtocol.java是空文件,有没有办法可以排除生成这个文件......

1 个答案:

答案 0 :(得分:5)

您无法排除此文件的生成,因为Avro IDL定义了协议(请参阅更多here)。

您的 PersonProtocol.java 为空,因为您不使用提供Avro IDL语言的RPC。

例如:

@namespace("net.tzolov.avro.extend")
protocol PersonProtocol {
 record Person {
    string firstName;
    string lastName;
 }

 string printMessage(string theMessage);    
}

通过使用代码生成,您将获得定义RPC方法的特定行:

void printMessage(java.lang.CharSequence theMessage, org.apache.avro.ipc.Callback<java.lang.CharSequence> callback) throws java.io.IOException;

如果您只想存储数据,则应使用avro架构(avsc)。