如何强制顺序处理文件内容?

knpiaxh1  于 2021-05-29  发布在  Hadoop
关注(0)|答案(1)|浏览(482)

我要求按原样处理文件,这意味着文件内容应按文件中显示的原样处理。
例如:我有一个文件,大小是700mbs。我们如何确保文件按其外观进行处理,因为它取决于数据节点的可用性。在某些情况下,如果datanode中的任何一个处理文件速度很慢(低配置)。
解决这个问题的一种方法是在文件中添加唯一的id/密钥,但是我们不想在文件中添加任何新的内容。
有什么想法:)

niwlg2el

niwlg2el1#

您可以保证只有一个Map程序通过编写自己的Map程序来计算文件的内容 FileInputFormat 哪一套 isSplitable 错误的。例如。

public class WholeFileInputFormat extends FileInputFormat<Text, BytesWritable> {
        @Override
        protected boolean isSplitable(FileSystem fs, Path filename) {
            return false;
        }

        @Override
        public RecordReader<Text, BytesWritable> getRecordReader(
          InputSplit split, JobConf job, Reporter reporter) throws IOException {
            return new WholeFileRecordReader((FileSplit) split, job);
        }
}

更多的例子,我想推荐一个github项目。根据hadoop版本的不同,可能需要做一些细微的更改。

相关问题