Вы не можете изменить файл, указанный в HDFS, за исключением добавления к нему. Смотрите этот ответ, который подтверждает, что Append можно:
Append data to existing file in HDFS Java
Карты снижение позволяет работать на файл параллельно, причем каждый блок отображения читает блок файла, и многие картографы работают сразу. Так оно и должно работать.
Любой заданный картограф может фильтровать строки и записывать все, некоторые или ни одного из них в новый файл довольно легко.
Если вы используете map-reduce для записи измененного файла, по умолчанию он будет отображаться в виде каталога файлов, которые могут быть объединены в один файл в зависимости от вашего требования.
Привет, большое спасибо за ваш ответ. Как обеспечить, чтобы вывод был сериализован при объединении выходных файлов в один файл. Я имею в виду, что исходный файл содержит данные блока 1, за которыми следуют данные блока 2, и мой выходной файл также должен иметь данные блока 1, за которыми следуют данные блока 2, но с некоторыми строками в каждом из блоков, отфильтрованных. Это возможно ? – user2783058
На карте уменьшите работу, вы начнете с 1 файла из 10 блоков. Один процесс будет читать каждый блок, и если вы просто хотите отфильтровать некоторые строки и выписать данные, вы получите 10 файлов в каталоге, каждый из которых соответствует вашим первоначальным 10 блокам. Файлы будут иметь имя 00000 до 00010, и я думаю, что они будут иметь тот же порядок, что и исходные блоки, но я не уверен в этом. Если каждый блок может обрабатываться независимо, вам небезразличен, какой блок 1 или 2? –
Если заказ имеет важное значение, запустите работу по сокращению карты с помощью одного редуктора и выполните сортировку - тогда у вас будет один файл с N блоками и гарантированный порядок сортировки. –