Ответ 1
Я понимаю, что это старая нить. Но я сам был заинтересован в ответе на этот вопрос - и dk89 также снова спросил в 2013 году. Итак, мы идем:
distcp не поддерживает подстановочные знаки. Самое близкое, что вы можете сделать, это:
Найдите файлы, которые вы хотите скопировать (источники), затем фильтр, используя grep, формат для hdfs, используя awk, и выведите результат в список "входные файлы":
hadoop dfs -lsr hdfs://localhost:9000/path/to/source/dir/
| grep -e webapp.log.3. | awk '{print "hdfs\://localhost\:9000/" $8'} > input-files.txt
Поместите список входных файлов в hdfs
hadoop dfs -put input-files.txt .
Создать целевой каталог
hadoop dfs -mkdir hdfs://localhost:9000/path/to/target/
Запустите distcp, используя список входных файлов и указав целевой адрес hdfs:
hadoop distcp -i -f input-files.txt hdfs://localhost:9000/path/to/target/