考虑一个想要使用Hadoop
的应用程序,以便按照以下简化的MapReduce
序列处理大量专有的二进制编码文本数据:
步骤5中标识的特定于格式的特征(上下文)也作为键值对保存在(小)文本文件中,以便步骤6和步骤7可以访问它们。
第6步中的拆分使用自定义InputFormat
类(每个自定义文件格式一个)进行。
为了在Hadoop中实现这种情况,可以在Mapper
中集成步骤1 - 步骤5,并在步骤7中使用另一个Mapper
。
此方法的一个问题是如何让自定义InputFormat
知道要使用哪些提取文件来生成拆分。例如,格式A可以表示具有略微不同特征的2个提取文件(例如,不同的行分隔符),因此2个不同的上下文保存在2个不同的文件中。
基于以上所述,每个自定义getSplits(JobConf)
的{{1}}方法需要在拆分之前访问每个文件的上下文。但是,每种格式最多可以有1 InputFormat
个类,所以如何将适当的提取文件集与正确的上下文文件相关联?
解决方案可能是使用某些特定的命名约定来关联提取的文件和上下文(反之亦然),但还有更好的方法吗?
答案 0 :(得分:0)
这听起来更像一个Storm(流处理)问题,其中一个spout从URL和拓扑中的后续螺栓加载二进制文件列表,执行以下每个操作。