2011-04-18 29 views

답변

2

DistCp는 실제로 일반적인 map-reduce 작업입니다. 일반적인 map-reduce 작업의 입력에 사용할 때와 동일한 globbing 구문을 사용할 수 있습니다. 일반적으로 foo/*.log을 사용하면 충분합니다. 여기서 hadoop fs -ls 문으로 실험 할 수 있습니다. globbing이 fs -ls으로 작동하면 DistCp와 함께 작동한다면 (거의 비슷하지만 차이점은 상당히 미묘합니다).

+4

s3n : // 경로에서 작동하지 않는 것 같습니다. Hadoop -ls는 s3n : // 와일드 카드로 작동하지만, 이상한. –

+1

이 질문은 2011 년부터이며 와일드 카드로 distcp를 사용하도록 변경 되었습니까? – Dimitry

+0

버전 2는 와일드 카드를 지원합니다. doc : https://hadoop.apache.org/docs/r1.2.1/distcp2.html –

12

나는 이것이 오래된 스레드라는 것을 알고 있습니다. 그러나 나는이 질문에 대한 답에 직접 관심이 있었고 dk89도 2013 년에 다시 물었다. 그래서 여기에 우리가 간다.

distcp는 와일드 카드를 지원하지 않는다. 당신이 할 수있는 가장 가까운에 있습니다 :

하면, 필터는 다음 "입력 파일"을 그렙, AWK 사용하여 HDFS에 대한 형식 및 출력 결과를 사용하여 당신이 (소스) 복사 할 파일을 찾기 목록 :

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/ 
관련 문제