2014-03-20 2 views
1

병합 :내가 지금처럼 두 개의 별도의 디렉토리에 파일을 생성 두 맵리 듀스 작업이 맵리 듀스 출력

Directory output1: 
------------------ 
/output/20140102-r-00000.txt 
/output/20140102-r-00000.txt 
/output/20140103-r-00000.txt 
/output/20140104-r-00000.txt 

Directory output2: 
------------------ 
/output-update/20140102-r-00000.txt 

나는 새로운 디렉토리에이 두 디렉토리를 병합 할/출력 완료를/어디 20140102 -r-00000.txt는/output 디렉토리의 원본 파일을 대체하고 "-r-0000x"는 모두 파일 이름에서 제거됩니다. 두 원본 디렉토리가 비어있을 것입니다 다음과 같이 결과 디렉토리가 보일 것입니다 :

Directory output3: 
------------------- 
/output-complete/20140102.txt 
/output-complete/20140102.txt 
/output-complete/20140103.txt 
/output-complete/20140104.txt 

이 작업을 수행하는 가장 좋은 방법은 무엇입니까? HDFS 쉘 명령 만 사용할 수 있습니까? 두 디렉토리를 가로 지르고 논리를 수행하기 위해 Java 프로그램을 작성해야합니까?

답변

0

당신이 돼지를 사용할 수 있습니다 ...

get_data = load '/output*/20140102*.txt' using Loader() 
store get_data into "/output-complete/20140102.txt" 

또는 HDFS 명령 ...

hadoop fs -cat '/output*/20140102*.txt' > output-complete/20140102.txt 

단일 qoutes 다음 따옴표

+0

20140102는 정적이 아닙니다. 그것은 무엇이든 수 있습니다. 처음 8 자리를 저장하고 \ d {8} *. txt와 같은 출력 파일의 이름이 필요합니다. – medium

0

당신은 HDFS를 사용하여 시도 작동하지 않을 수 있습니다 hdfs 파일을 병합하기위한 명령 -getMerge.

관련 문제