AVRO avdl文件生成

Iks*_*vak 3 java hadoop avro

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

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

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

Gae*_* E. 5

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

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

例如:

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

 string printMessage(string theMessage);    
}
Run Code Online (Sandbox Code Playgroud)

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

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

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