복붙노트

[HADOOP] Hadoop FS 셸을 사용하여 두 개의 파일을 어떻게 Hadoop의 파일로 연결할 수 있습니까?

HADOOP

Hadoop FS 셸을 사용하여 두 개의 파일을 어떻게 Hadoop의 파일로 연결할 수 있습니까?

가능하다면 Hadoop 0.20.2로 작업 중이며 가능한 경우 -cat 쉘 명령을 사용하여 두 파일을 하나로 연결하려고합니다 (소스 : http://hadoop.apache.org/common/docs/r0.19.2/hdfs_shell.html).

다음은 내가 제출하는 명령입니다 (이름이 변경되었습니다).

**/path/path/path/hadoop-0.20.2> bin/hadoop fs -cat /user/username/folder/csv1.csv /user/username/folder/csv2.csv > /user/username/folder/outputdirectory/**

bash를 반환합니다. / user / username / folder / outputdirectory / : 해당 파일이나 디렉토리가 없습니다.

나는 또한 그 디렉토리를 만들고 나서 다시 실행하려고 노력했다 - 나는 여전히 '그런 파일이나 디렉토리가 없다'라는 오류를 가지고있다.

나는 또한 새로운 폴더와 -getmerge를 결합하기 위해 -cp 명령을 사용하여 시도했지만 getmerge와 함께 운이 없다.

hadoop에서이 작업을 수행하는 이유는 파일이 방대하고 hadoop 외부에서 다운로드, 병합 및 다시 업로드하는 데 오랜 시간이 걸리기 때문입니다.

해결법

  1. ==============================

    1.이 오류는 명령의 표준 출력을 HDFS로 다시 보냅니다. source 인자가 ​​하이픈 인 hadoop fs -put 명령을 사용하면 이렇게 할 수 있습니다 :

    이 오류는 명령의 표준 출력을 HDFS로 다시 보냅니다. source 인자가 ​​하이픈 인 hadoop fs -put 명령을 사용하면 이렇게 할 수 있습니다 :

    bin/hadoop fs -cat /user/username/folder/csv1.csv /user/username/folder/csv2.csv | hadoop fs -put - /user/username/folder/output.csv
    

    -getmerge는 또한 HDFS가 아닌 로컬 파일 시스템으로 출력합니다.

    unforntunatley 파일을 하나의 머신에 복사하지 않고도 여러 파일을 하나의 파일로 병합하는 효율적인 방법은 없습니다 (Hadoop의 appending을 보지 않고 기본적으로 hadoop의 버전에서는 기본적으로 비활성화되어 있고 잠재적으로 버그가 있음). 그런 다음 HDFS로 다시 돌아갑니다.

  2. ==============================

    2.폴더에있는 모든 파일을 출력 파일에 연결하려면 :

    폴더에있는 모든 파일을 출력 파일에 연결하려면 :

    hadoop fs -cat myfolder/* | hadoop fs -put - myfolder/output.txt
    

    hdfs에 여러 개의 폴더가 있고 각 폴더의 파일을 연결하려는 경우 셸 스크립트를 사용하여이 작업을 수행 할 수 있습니다. (참고 : 이것은별로 효과적이지 않으며 느릴 수 있음)

    구문 :

    for i in `hadoop fs -ls <folder>| cut -d' ' -f19` ;do `hadoop fs -cat $i/* | suy hadoop fs -put - $i/<outputfilename>`; done
    

    예 :

    for i in `hadoop fs -ls my-job-folder | cut -d' ' -f19` ;do `hadoop fs -cat $i/* |hadoop fs -put - $i/output.csv`; done
    

    설명: 그래서 기본적으로 모든 파일들과 cat 폴더의 각 내용을 hdfs의 출력 파일로 반복합니다.

  3. from https://stackoverflow.com/questions/10607716/how-can-i-concatenate-two-files-in-hadoop-into-one-using-hadoop-fs-shell by cc-by-sa and MIT license