如何在运行MR作业时忽略MapFiles的索引文件



我有一个满是MapFile s的目录。我现在想在它们上运行MR作业。我使用新API的SequenceFileInputFormat,它应该知道MapFile s作为线程状态中的一个答案。但是,这并不奏效。这项工作达到了一定的百分比,之后,我得到了

Error: java.lang.ClassCastException: org.apache.hadoop.io.LongWritable cannot be cast to com.mycompany.MyOwnWritable

我想映射器会绊倒索引文件。如何确保忽略这些,或者更好的是,只使用具有正确输入键和值类的文件?想到的唯一方法是重写Mapper<Object, Object, MyKeyOut, MyValueOut>并使用ifinstanceof检查,但我认为这很难看。有更好的方法吗?

我发现了它在索引文件上的位置。当启用输入路径的递归遍历时(通过将mapreduce.input.fileinputformat.input.dir.recursive设置为true),映射任务的文件是通过沿着文件和目录树向下走来收集的。SequenceFileInputFormat然后接收单独的文件而不是目录,因此MapFile检测失败。只有当输入格式接收到包含构成MapFile的两个文件的目录时,它才起作用。当关闭递归并确保布局MR所期望的(即,要处理的所有MapFile s都"平面"存储的目录,而没有额外的文件夹结构)时,或者通过为每个此类目录调用FileInputFormat.addInputPath手动添加包含MapFile s的所有目录时,作业运行不会失败。

编辑:报告为错误:MAPREDUCE-6155

相关内容

  • 没有找到相关文章

最新更新