2017-05-03 13 views
1

필자는 x 개의 파일 만 distcp 할 필요가 있습니다.두 개의 Hdfs 디렉토리 (별도의 클러스터) 사이에서 distcp를 사용하여 파일을 쉼표로 구분하여 distcp 할 수 있습니까?

할 방법을 찾을 수 없습니다.

  1. 하나의 아이디어는 임시 디렉토리에 그것을 복사하는 것입니다 다음 distcp 디렉토리. 완료되면 해당 임시 디렉터리를 삭제할 수 있습니다.

  2. 개별 distcp 명령 (각 파일에 대해). 이것은 고통 스러울 수 있습니다.

쉼표 분리가 허용되는지 확실하지 않습니다.

아이디어가 있으십니까?

미리 감사드립니다.

+0

패턴이있는 경우 와일드 카드를 사용할 수 있습니다. 디렉토리 구조 샘플을 보여주십시오. – franklinsijo

+0

응용 프로그램 디렉토리 만. 스파크 응용 프로그램 기록 파일을 상상해보십시오./var/log/spark/appHistory/ /. 나는 한 번에 소수만 필요하다. 그래서 와일드 카드는 도움이되지 않습니다. –

답변

3

당신은 DistCp 명령

hadoop distcp hdfs://src_nn/var/log/spark/appHistory/<appId_1>/ \ 
       hdfs://src_nn/var/log/spark/appHistory/<appId_2>/ \ 
       .... 
       hdfs://src_nn/var/log/spark/appHistory/<appId_n>/ \ 
       hdfs://dest_nn/target/ 

또는 소스의 목록이 포함 된 파일을 만들고 -f 옵션

을 함께 소스로 명령을 전달하는 소스로 모든 파일을 전달할 수 있습니다
hadoop distcp -f hdfs://src_nn/list_of_files hdfs://dest_nn/target/ 
+1

답장을 잊어 버렸습니다. 그러나 이것은 나에게 많은 어려움을 덜어 줬다. 이 트릭을 시스템에서 5 개월 동안 사용했습니다. 공장. 고마워요 @franklinsijo –