Я понимаю, что это старая тема.Но я был заинтересован в ответе на этот вопрос сам - и dk89 также спросил снова в 2013 году. Итак, мы идем:
distcp не поддерживает подстановочные знаки.Самое близкое, что вы можете сделать, это:
Найти файлы, которые вы хотите скопировать (источники), затем отфильтровать с помощью grep, отформатировать hdf с использованием 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 dir:
hadoop distcp -i -f input-files.txt hdfs://localhost:9000/path/to/target/