복붙노트

[HADOOP] Hadoop fs - 특정 파일 만 복사

HADOOP

Hadoop fs - 특정 파일 만 복사

fs -get 또는 fs -copyToLocal을 사용하여 특정 파일 만 복사하는 방법이 있습니까? 참고 :이 반복적 인 및 전체 클러스터 트래버스 싶습니다.

그것을 알아 냈지만 나는 내 자신의 질문에 대답 할 수 없다.

우리가 해낸 방법은 다음과 같습니다. 방금 셸 스크립트를 작성했습니다.

mkdir /tmp/txt

    for F in `hadoop fs -fs hdfs://namenode.mycluster -lsr / | grep '/*.txt$' | awk '{print $NF}'; 
    do
       hadoop fs -fs hdfs://namenode.mycluster -copyToLocal $F /tmp/las/ 
    done

해결법

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

    1.우리가 해낸 방법은 다음과 같습니다. 방금 셸 스크립트를 작성했습니다.

    우리가 해낸 방법은 다음과 같습니다. 방금 셸 스크립트를 작성했습니다.

    LOCAL_DIR=/tmp/txt
    mkdir $LOCAL_DIR
    
    for F in `hadoop fs -fs hdfs://namenode.mycluster -lsr / | grep '/*.txt$' | awk '{print $NF}'; 
    do
       hadoop fs -fs hdfs://namenode.mycluster -copyToLocal $F $LOCAL_DIR 
    done`
    
  2. ==============================

    2.파일을 복사하기 위해 정규 표현식을 사용할 수 있습니다. 거기 hadoop에서 명령 줄을 사용하는 예제입니다. 이것은 get을 사용하지 않지만, get과 같은 동작을하는 put을 사용합니다.

    파일을 복사하기 위해 정규 표현식을 사용할 수 있습니다. 거기 hadoop에서 명령 줄을 사용하는 예제입니다. 이것은 get을 사용하지 않지만, get과 같은 동작을하는 put을 사용합니다.

    이 같은 것 : hadoop fs -get out / *

    http://prazjain.wordpress.com/2012/02/15/how-to-run-hadoop-map-reduce-program-from-command-line/

  3. ==============================

    3.Hadoop은 경로에서 이중 별 glob 표기법을 지원하지 않으므로이를 수행하는 방법과는 다른 방법이 없습니다.

    Hadoop은 경로에서 이중 별 glob 표기법을 지원하지 않으므로이를 수행하는 방법과는 다른 방법이 없습니다.

    hadoop fs -get /**/*.txt /tmp
    

    그러나 자신 만의 코드를 작성하여 FsShell의 현재 소스를 살펴보고 FileInputFormat의 listStatus 메소드와 짝을 지을 수 있습니다.이 메소드는 PathFilter를 허용하도록 구성 할 수 있습니다. 이 PathFilter에서는 경로가 원하는 파일 유형의 경우에만 true를 반환 할 수 있습니다.

  4. from https://stackoverflow.com/questions/10686625/hadoop-fs-get-copy-only-specific-files by cc-by-sa and MIT license