ファイルのコンテンツをファイルに表示されているとおりに処理する必要があるため、ファイルを処理する必要があります。
例: ファイルがあり、サイズは 700MB です。データノードの可用性に依存するため、ファイルが表示どおりに処理されることを確認する方法。場合によっては、Datanode のいずれかがファイルをゆっくりと処理する場合 (低構成)。
これを修正する 1 つの方法は、ファイルに一意の ID/キーを追加することですが、ファイルに新しいものを追加したくありません。
何かご意見は :)
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 のバージョンによっては、若干の変更が必要になる場合があります。