java - AVRO avdl文件生成

标签 java hadoop avro

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

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

我正在生成 java 文件,所以这个文件正在生成 PersonProtocol.java 和 Person.java。 PersonProtocol.java 是空文件,有什么方法可以排除生成此文件...

最佳答案

您不能排除此文件的生成,因为 Avro IDL 定义了一个协议(protocol)(参见更多 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 schema (avsc)。

关于java - AVRO avdl文件生成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14735498/

相关文章:

hive - 将 avro 十进制数据加载到 BigQuery 中?

java - 接口(interface)是否被视为对象?

java - 将项目中的单个包发布为 Maven Artifact

java - 独立服务器上的 Bukkit 插件之间的通信

apache-spark - 如何从空 RDD 读取 Avro 模式?

python - spark 1.3.0、python、avro 文件、在 spark-defaults.conf 中设置的驱动程序类路径,但从属设备看不到

java - 从 Java 在 Linux 上调用 ps

apache - 如何将 HDFS namenode 移动到新主机

hadoop - 数据节点和名称节点中不兼容的 clusterID

hadoop - MapReduce 排列