我需要编写一个 map reduce 程序,它从整个 hdfs 文件中读取 avro 文件。我的映射器代码输入将是具有不同架构的不同 avro 文件。在我的代码的映射器部分中,无论文件模式如何,我都需要读取文件的整个记录。谁能告诉我如何实现从 avro 读取整条记录。
提前致谢。
我需要编写一个 map reduce 程序,它从整个 hdfs 文件中读取 avro 文件。我的映射器代码输入将是具有不同架构的不同 avro 文件。在我的代码的映射器部分中,无论文件模式如何,我都需要读取文件的整个记录。谁能告诉我如何实现从 avro 读取整条记录。
提前致谢。
一般来说,我认为这是可行的。不确定您要达到什么目标,但假设您想对由相同架构支持的记录做一些事情。
在您的映射器中,读取字节并获取模式 json。这是一个如何获取模式的示例:http: //www.programcreek.com/java-api-examples/index.php ?api= org.apache.avro.generic.GenericDatumReader 映射器的关键是模式 json 字符串和值将是记录(字节)。然后在你的减速器中,你将拥有所有相同的模式,你将能够使用 GenericRecord 使用提供的模式反序列化数据并做任何你想做的事情。