[HADOOP] Hadoop fs - 특정 파일 만 복사
HADOOPHadoop 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.우리가 해낸 방법은 다음과 같습니다. 방금 셸 스크립트를 작성했습니다.
우리가 해낸 방법은 다음과 같습니다. 방금 셸 스크립트를 작성했습니다.
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.파일을 복사하기 위해 정규 표현식을 사용할 수 있습니다. 거기 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.Hadoop은 경로에서 이중 별 glob 표기법을 지원하지 않으므로이를 수행하는 방법과는 다른 방법이 없습니다.
Hadoop은 경로에서 이중 별 glob 표기법을 지원하지 않으므로이를 수행하는 방법과는 다른 방법이 없습니다.
hadoop fs -get /**/*.txt /tmp
그러나 자신 만의 코드를 작성하여 FsShell의 현재 소스를 살펴보고 FileInputFormat의 listStatus 메소드와 짝을 지을 수 있습니다.이 메소드는 PathFilter를 허용하도록 구성 할 수 있습니다. 이 PathFilter에서는 경로가 원하는 파일 유형의 경우에만 true를 반환 할 수 있습니다.
from https://stackoverflow.com/questions/10686625/hadoop-fs-get-copy-only-specific-files by cc-by-sa and MIT license
'HADOOP' 카테고리의 다른 글
[HADOOP] 자바 API를 사용하여 jdbc와 같은 hbase 쉘 명령을 직접 보내려면 어떻게해야합니까? (0) | 2019.07.24 |
---|---|
[HADOOP] spark java api에서 재귀 적으로 HDFS에서 모든 파일 읽기 (0) | 2019.07.24 |
[HADOOP] 돼지와 하둡 연결 오류 (0) | 2019.07.23 |
[HADOOP] 돼지 10.0 - 튜플을 그룹화하고 foreach에서 병합 (0) | 2019.07.23 |
[HADOOP] 웹 응용 프로그램 백엔드로서의 HBase (0) | 2019.07.23 |