python hdfs 3 모듈 을 사용 하여 hdfs 에 대한 조작 상세 설명
hdfs dfs -ls /user/spark/
hdfs dfs -get /user/spark/a.txt /home/spark/a.txt # HDFS
hdfs dfs -put -f /home/spark/a.txt /user/spark/a.txt #
hdfs dfs -mkdir -p /user/spark/home/datetime=20180817/
....
python 프로그래머 로 서 매일 hdfs 를 조작 하 는 것 은 프로그램 에서 각종 cmd 호출 명령 을 쓰 는 것 입 니 다.한편 으로 는 보기 싫 고 다른 한편 으로 는 Pythoner 로 서 수치 입 니 다.그래서 hdfs 3 모듈 을 선택 하여 hdfs 작업 을 하 는 것 은 순간 우아 함 을 느 꼈 습 니 다.hdfs 공식 API:https://hdfs3.readthedocs.io/en/latest/api.html
>>> from hdfs3 import HDFileSystem
# HDFS
>>> hdfs = HDFileSystem(host='localhost', port=8020)
>>> hdfs.ls('/user/data')
>>> hdfs.put('local-file.txt', '/user/data/remote-file.txt')
>>> hdfs.cp('/user/data/file.txt', '/user2/data')
\#파일 읽 기
#txt
>>> with hdfs.open('/user/data/file.txt') as f:
... data = f.read(1000000)
# pandas 1000
>>> with hdfs.open('/user/data/file.csv.gz') as f:
... df = pandas.read_csv(f, compression='gzip', nrows=1000)
\#파일 쓰기>>> with hdfs.open('/tmp/myfile.txt', 'wb') as f:
... f.write(b'Hello, world!')
\#다 중 노드 연결 설정
host = "nameservice1"
conf = {"dfs.nameservices": "nameservice1",
"dfs.ha.namenodes.nameservice1": "namenode113,namenode188",
"dfs.namenode.rpc-address.nameservice1.namenode113": "hostname_of_server1:8020",
"dfs.namenode.rpc-address.nameservice1.namenode188": "hostname_of_server2:8020",
"dfs.namenode.http-address.nameservice1.namenode188": "hostname_of_server1:50070",
"dfs.namenode.http-address.nameservice1.namenode188": "hostname_of_server2:50070",
"hadoop.security.authentication": "kerberos"
}
fs = HDFileSystem(host=host, pars=conf)
#API
hdfs = HDFileSystem(host='127.0.0.1', port=8020)
hdfs.cancel_token(token=None) # ,
hdfs.cat(path) #
hdfs.chmod(path, mode) #
hdfs.chown(path, owner, group) # ,
hdfs.concat(destination, paths) # paths , destination , (The source files are deleted on successful completion. 。)
hdfs.connect() # 。 LZ: , , HDFileSystem(host='127.0.0.1', port=8020)
hdfs.delegate_token(user=None)
hdfs.df() #HDFS /
hdfs.disconnect() # connect() ,
hdfs.du(path, total=False, deep=False) # ,total ,deep
hdfs.exists(path) #
hdfs.get(hdfs_path, local_path, blocksize=65536) # HDFS ,blocksize
hdfs.get_block_locations(path, start=0, length=0) #
hdfs.getmerge(path, filename, blocksize=65536) # ,
hdfs.glob(path) #/user/spark/abc-*.txt
hdfs.head(path, size=1024) #
hdfs.info(path) #
hdfs.isdir(path) #
hdfs.isfile(path) #
hdfs.list_encryption_zones() #
hdfs.ls(path, detail=False) # ,detail
hdfs.makedirs(path, mode=457) # mkdir -p
hdfs.mkdir(path) #
hdfs.mv(path1, path2) # path1 path2
open(path, mode='rb', replication=0, buff=0, block_size=0) # , python
hdfs.put(filename, path, chunk=65536, replication=0, block_size=0) # ,HDFS
hdfs.read_block(fn, offset, length, delimiter=None) # offset ,length ,delimiter bytestring
>>> hdfs.read_block('/data/file.csv', 0, 13)
b'Alice, 100
Bo'
>>> hdfs.read_block('/data/file.csv', 0, 13, delimiter=b'
')
b'Alice, 100
Bob, 200'
hdfs.rm(path, recursive=True) # recursive
hdfs.tail(path, size=1024) #
hdfs.touch(path) #
hdfs.walk(path) #
추가 지식:HDFS 명령 으로 폴 더 와 파일 을 일괄 생 성 합 니 다.테스트 폴 더 일괄 생 성:
hadoop fs -mkdir -p /user/hivedata/temp/201912311001/d={27..30}/h={10..17}/m5={5,15,25}/
테스트 파일 일괄 생 성:
hadoop fs -touchz /user/hivedata/temp/201912311001/d={27..30}/h={10..17}/m5={5,15,25}/{0..5}.orc
최종 효과:
hadoop fs -ls -R /user/hivedata/
이상 의 python 은 hdfs 3 모듈 을 사용 하여 hdfs 를 조작 하 는 상세 한 설명 은 바로 작은 편집 이 여러분 에 게 공유 하 는 모든 내용 입 니 다.여러분 께 참고 할 수 있 고 많은 응원 을 바 랍 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
로마 숫자를 정수로 또는 그 반대로 변환그 중 하나는 로마 숫자를 정수로 변환하는 함수를 만드는 것이었고 두 번째는 그 반대를 수행하는 함수를 만드는 것이었습니다. 문자만 포함합니다'I', 'V', 'X', 'L', 'C', 'D', 'M' ; 문자열이 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.