java - 不论模式如何,在 map 中读取avro文件记录都会减少

标签 java hadoop mapreduce avro cloudera-cdh

我需要编写一个map reduce程序来从整个hdfs文件中读取avro文件。我的映射器代码输入将是具有不同架构的不同avro文件。在我的代码的映射器部分中,无论文件模式如何,我都需要读取文件的整个记录​​。谁能告诉我我们如何才能从avro中读取整个记录。

提前致谢。

最佳答案

一般来说,我认为这是可行的。不确定要实现的目标,但可以说您想对由相同模式支持的记录做些什么。

在您的映射器中,读取字节并获取架构json。这是一个如何获取模式的示例:http://www.programcreek.com/java-api-examples/index.php?api=org.apache.avro.generic.GenericDatumReader
映射器中的键将是架构json字符串,而值将是记录(字节)。然后在化简器中,您将拥有所有相同的架构,并且您将能够使用GenericRecord使用提供的架构对数据进行反序列化,并执行您想要的任何事情。

关于java - 不论模式如何,在 map 中读取avro文件记录都会减少,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23750867/

相关文章:

hadoop - 是否可以在没有 HDFS 和 Hadoop 集群的情况下在本地运行 MapReduce?

java - 创建 JClouds SwiftApi 时出错 : Provider org. 无法实例化 jclouds.openstack.keystone.v2_0.KeystoneApiMetadata

java - 在 Java 中使用 glob 匹配路径字符串

java - 如何使用 hadoop mapreduce 打印 WordCount 中的键和值

javascript - MongoDB 中的reduce 函数出现奇怪的数值错误

hadoop - 如何在代码中获取 Hadoop 中的统计信息?

java - 具有两列的 TreeView JavaFX 8

java - 如何在 yml 中获取我的配置值 - 使用 dropwizard(微服务)Jersey D.I @Injection?

hadoop - HBase如何实现对HDFS的随机访问?

java - 如何将映射器中的内容写入文件 - Hadoop