2014-02-14 3 views
2

hadoop dfs -getmerge 명령의 출력을 다른 시스템에 저장할 수 있습니까?다른 기계에 hadoop getmerge

이유는 로컬 컴퓨터에 충분한 공간이 없기 때문입니다. 작업 출력은 100GB이고 로컬 저장 용량은 60GB입니다.

또 다른 이유는 다른 프로그램에서 로컬로 다른 프로그램의 출력을 처리하고 싶기 때문일 수 있으며 두 번 전송하려고하지 않을 수 있습니다 (HDFS-> 로컬 FS -> 원격 시스템). 난 그냥 (HDFS -> 원격 컴퓨터) 싶어요. 또한

hadoop dfs -getmerge /user/hduser/Job-output [email protected]:/home/user/

, 나 또한 내 로컬 컴퓨터에 원격 호스트에서 HDFS 데이터를 좀하고 싶습니다 :

내가 좋아하는 scp 작품이 어떻게 비슷한 뭔가를 찾고 있어요.

이 경우에 유닉스 파이프 라인을 사용할 수 있습니까?

hadoop에 익숙하지 않은 사용자를 위해이 명령에서 로컬 dir 매개 변수 (/user/hduser/Job-output)를 원격 시스템의 디렉토리로 바꾸는 방법을 찾고 있습니다.

답변

2

이 정확하게 당신이 필요 할 것입니다 : 순서 및 표준 출력으로 출력 할 모든 파일을 읽습니다 - 고양이

hadoop fs -cat /user/hduser/Job-output/* | ssh [email protected] "cat >mergedOutput.txt" 

FS를.

ssh는 원격 컴퓨터의 파일에이 파일을 전달합니다 (scp는 표준 입력을 입력으로 허용하지 않습니다).

+0

위대한 답변이었습니다! 정확히 필요한 것! 실제로, 나는 HDFS가있는 원격 호스트에 연결하기를 원했기 때문에, 명령은 다른 방향으로 사용된다 : 'ssh [email protected] "hadoop fs -cat/user/hduser/Job-output/part- *" | 고양이> mergedOutput.txt'. 나는 당신의 답을 편집하여이 명령을 포함시키고'/ Job-output/*'대신'/ Job-output/part- *'을 추가하여 결과 만 얻습니다 – vefthym

관련 문제