[HADOOP] `hadoop`에서`find` 명령과 동일한 명령이 있습니까?
HADOOP`hadoop`에서`find` 명령과 동일한 명령이 있습니까?
터미널에서 다음과 같은 파일을 찾을 수있는 명령을 찾을 수 있습니다.
find . -type d -name "*something*" -maxdepth 4
그러나, 내가 hadoop 파일 시스템에있을 때, 나는 이것을 할 방법을 찾지 못했습니다.
hadoop fs -find ....
오류가 발생합니다.
사람들이 hadoop에서 파일을 어떻게 트래버스합니까? 나는 hadoop 2.6.0-cdh5.4.1을 사용하고 있습니다.
해결법
-
==============================
1.hadoop fs -find는 Apache Hadoop 2.7.0에서 소개되었습니다. 대부분 이전 버전을 사용하고 있으므로 아직 가지고 있지 않습니다. 자세한 내용은 HADOOP-8989를 참조하십시오.
hadoop fs -find는 Apache Hadoop 2.7.0에서 소개되었습니다. 대부분 이전 버전을 사용하고 있으므로 아직 가지고 있지 않습니다. 자세한 내용은 HADOOP-8989를 참조하십시오.
그 동안 당신은
hdfs dfs -ls -R <pattern>
예 : hdfs dfs -ls -R /demo/order*.*
물론 '찾기'만큼 강력하지는 않으며 기본이 부족합니다. 내가 아는 바로는 사람들은이 문제를 해결하기 위해 스크립트를 작성했습니다.
-
==============================
2.Cloudera 스택을 사용하는 경우 찾기 도구를 사용해보십시오.
Cloudera 스택을 사용하는 경우 찾기 도구를 사용해보십시오.
org.apache.solr.hadoop.HdfsFindTool
명령을 bash 변수로 설정하십시오.
COMMAND='hadoop jar /opt/cloudera/parcels/CDH/lib/solr/contrib/mr/search-mr-job.jar org.apache.solr.hadoop.HdfsFindTool'
사용법은 다음과 같습니다.
${COMMAND} -find . -name "something" -type d ...
-
==============================
3.사용할 수있는 cloudera 소포가 없으므로 awk를 사용할 수 있습니다.
사용할 수있는 cloudera 소포가 없으므로 awk를 사용할 수 있습니다.
hdfs dfs -ls -R /some_path | awk -F / '/^d/ && (NF <= 5) && /something/'
그것은 find와 거의 같습니다. - 유형 d - 이름 "* 뭔가 *"- maxdepth 4 명령.
-
==============================
4..bash_profile에서 별칭으로 HdfsFindTool을 추가하면 항상 쉽게 사용할 수 있습니다.
.bash_profile에서 별칭으로 HdfsFindTool을 추가하면 항상 쉽게 사용할 수 있습니다.
- 프로필 아래에 추가 별칭 hdfsfind = 'hadoop jar /opt/cloudera/parcels/CDH/lib/solr/contrib/mr/search-mr-job.jar org.apache.solr.hadoop.HdfsFindTool' 별칭 hdfs = 'hadoop fs'
- u는 다음과 같이 사용할 수 있습니다 : (여기에서는 find 도구를 사용하여 HDFS 소스 폴더를 현명하게 파일 이름과 레코드 수를 얻습니다.)
$> cnt = 1; hdfsfind에서 ff에 대해 - find /dev/abc/*/2018/02/16/*.csv -type f; do pp = echo $ {ff} | awk -F "/" '{print $ 7}'; fn = basename $ {ff}; fcnt = hdfs -cat $ {ff} | wc -l; echo "$ {cnt} = $ {pp} = $ {fn} = $ {fcnt}"; cnt = expr $ {cnt} + 1; 끝난
- 폴더 / 파일 세부 정보를 얻기 위해 간단합니다 : $> hdfsfind -find / dev / abc / -type f -name "* .csv" $> hdfsfind -find / dev / abc / -type d -name "장난감"
from https://stackoverflow.com/questions/32896393/is-there-the-equivalent-for-a-find-command-in-hadoop by cc-by-sa and MIT license
'HADOOP' 카테고리의 다른 글
[HADOOP] 하이브는 스파크보다 빠릅니까? (0) | 2019.08.05 |
---|---|
[HADOOP] oozie 작업 이름의 이름을 동적으로 바꿀 수 있습니까? (0) | 2019.08.05 |
[HADOOP] 0.9.1을 hadoop에서 실행 2.2.0 Maven 의존성 (0) | 2019.08.05 |
[HADOOP] Spark SQL / Hive / Presto를 사용하여 Parquet / S3에서 Redshift로 바로 복사 할 수 있습니까? (0) | 2019.08.05 |
[HADOOP] 서브 디렉토리를 HDFS에 대해 재귀 적으로 나열하려면 어떻게합니까? (0) | 2019.08.05 |