0

ファイルのコンテンツをファイルに表示されているとおりに処理する必要があるため、ファイルを処理する必要があります。

例: ファイルがあり、サイズは 700MB です。データノードの可用性に依存するため、ファイルが表示どおりに処理されることを確認する方法。場合によっては、Datanode のいずれかがファイルをゆっくりと処理する場合 (低構成)。

これを修正する 1 つの方法は、ファイルに一意の ID/キーを追加することですが、ファイルに新しいものを追加したくありません。

何かご意見は :)

4

1 に答える 1

2

falseFileInputFormatに設定する独自のマッパーを作成することにより、1 つのマッパーのみがファイルのコンテンツを計算することを保証できます。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 のバージョンによっては、若干の変更が必要になる場合があります。

于 2016-02-16T10:06:04.593 に答える