[HADOOP] 하위 디렉토리의 목록을 가져옵니다
HADOOP하위 디렉토리의 목록을 가져옵니다
나는이 작업을 수행 할 수 있습니다 알고 :
data = sc.textFile('/hadoop_foo/a')
data.count()
240
data = sc.textFile('/hadoop_foo/*')
data.count()
168129
그러나, 나는 "/ hadoop_foo /"모든 하위 디렉토리의 데이터의 크기를 계산하고 싶습니다. 나는 그렇게 할 수 있습니까?
즉, 내가 원하는 것은이 같은 것입니다 :
subdirectories = magicFunction()
for subdir in subdirectories:
data sc.textFile(subdir)
data.count()
나는 시도했다 :
In [9]: [x[0] for x in os.walk("/hadoop_foo/")]
Out[9]: []
하지만 난 그게 드라이버 (이 경우에 게이트웨이)의 로컬 디렉토리에서 검색하기 때문에 "/이 hadoop_foo /"를 HDFS에 자리 잡고있는 동안 즉, 실패 생각합니다. 대한 동일 "HDFS : /// hadoop_foo /".
실행할 수있는 방법이 있다면 내가 HDFS에 대한 재귀 적으로 하위 디렉토리를 나열 할 수 있습니다 어떻게 읽고 나면? 궁금 :
hadoop dfs -lsr /hadoop_foo/
코드에서 ..
일반 TXT에 두 개의 수레를 작성하는 올바른 방법에서 :
In [28]: os.getcwd()
Out[28]: '/homes/gsamaras' <-- which is my local directory
해결법
-
==============================
1.파이썬 사용 HDFS 모듈; 도보 () 메소드는 파일의 사용자 목록을 얻을 수 있습니다.
파이썬 사용 HDFS 모듈; 도보 () 메소드는 파일의 사용자 목록을 얻을 수 있습니다.
코드는 다음과 같이 보일 것입니다 :
from hdfs import InsecureClient client = InsecureClient('http://host:port', user='user') for stuff in client.walk(dir, 0, True): ...
스칼라하면 파일 시스템을 (발 FS = FileSystem.get (새 구성 ())) 얻을 https://hadoop.apache.org/docs/r2.4.1/api/org/apache/hadoop/fs/FileSystem를 실행할 수 있습니다 이 .html #의 때 listFiles (org.apache.hadoop.fs.Path, 부울)
또한 os.subprocess와 스크립트에서 쉘 명령을 실행할 수 있지만 여기에 쉘 유틸리티의 텍스트 출력에 의존하기 때문에 이것은 권장되는 방법 결코 없다.
결국, 어떤 OP 근무하는) (subprocess.check_output를 사용했다 :
subdirectories = subprocess.check_output(["hadoop","fs","-ls", "/hadoop_foo/"])
from https://stackoverflow.com/questions/39420685/get-a-list-of-subdirectories by cc-by-sa and MIT license
'HADOOP' 카테고리의 다른 글
[HADOOP] 왜 하이브 맵리 듀스 작업이 죽었다? (0) | 2019.10.12 |
---|---|
[HADOOP] 감속기의 입력 파일을 가져 오기 (0) | 2019.10.12 |
[HADOOP] 하둡 : 출력 파일을 두 번 출력을 가지고 (0) | 2019.10.12 |
[HADOOP] 지도는 하둡 프레임 워크에서 데이터 구조를 구현하는 프로그램을 감소 (0) | 2019.10.12 |
[HADOOP] HIVE 쿼리는 지역 저장 파일에서 데이터 가져 오기 후 null 값을 반환 (0) | 2019.10.12 |