HDFS хранит файлы в виде набора байтов в блоках, и нет индексации, и, следовательно, нет способа читать только часть вашего файла (по крайней мере, на момент написания этой статьи).Более того, любой данный маппер может получить первый блок файла или 400-й, и вы не можете это контролировать.
Тем не менее, весь смысл MapReduce в том, чтобы распределить нагрузку по многим машинам.В нашем кластере мы одновременно запускаем до 28 картографов (7 на узел на 4 узлах), поэтому, если мой входной файл равен 1 ТБ, каждый слот карты может закончить чтение только 3% от общего файла или около 30 ГБ.Вы просто выполняете фильтр, который вам нужен, в маппере и обрабатываете только те строки, которые вам интересны.
Если вам действительно нужен фильтрованный доступ, вы можете захотеть взглянуть на хранение ваших данных в HBase.Он может выступать в качестве собственного источника для заданий MapReduce, обеспечивает фильтрованное чтение и сохраняет свои данные в HDFS, поэтому вы все еще находитесь в распределенном мире.