Мы используем Amazon Elastic Map Reduce для выполнения некоторых крупных заданий по обработке файлов. В рамках нашего рабочего процесса нам иногда нужно удалять файлы из S3, которые могут уже существовать. Мы делаем это с помощью интерфейса hadoop fs, например:
hadoop fs -rmr s3://mybucket/a/b/myfile.log
Это удаляет файл из S3 соответствующим образом, но на его месте остается пустой файл с именем "s3: // mybucket / a / b_ $ folder $". Как описано в этого вопроса , свинья Hadoop не может обработать эти файлы, поэтому последующие этапы рабочего процесса могут засорить этот файл.
(Обратите внимание, что не имеет значения, используем ли мы -rmr
или -rm
или используем ли мы s3://
или s3n://
в качестве схемы: все они демонстрируют описанное поведение.)
Как использовать интерфейс hadoop fs
для удаления файлов из S3 и не оставлять эти проблемные файлы позади?