亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

python使用hdfs3模塊對(duì)hdfs進(jìn)行操作詳解

 更新時(shí)間:2020年06月06日 10:20:46   作者:蝸牛!Destiny  
這篇文章主要介紹了python使用hdfs3模塊對(duì)hdfs進(jìn)行操作詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧

之前一直使用hdfs的命令進(jìn)行hdfs操作,比如:

hdfs dfs -ls /user/spark/
hdfs dfs -get /user/spark/a.txt /home/spark/a.txt #從HDFS獲取數(shù)據(jù)到本地
hdfs dfs -put -f /home/spark/a.txt /user/spark/a.txt #從本地覆蓋式上傳
hdfs dfs -mkdir -p /user/spark/home/datetime=20180817/
....

身為一個(gè)python程序員,每天操作hdfs都是在程序中寫各種cmd調(diào)用的命令,一方面不好看,另一方面身為一個(gè)Pythoner這是一個(gè)恥辱,于是乎就挑了一個(gè)hdfs3的模塊進(jìn)行hdfs的操作,瞬間就感覺優(yōu)雅多了:

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行數(shù)據(jù)
>>> 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!')

#多節(jié)點(diǎn)連接設(shè)置

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) #未知,求大佬指點(diǎn)
hdfs.cat(path) #獲取指定目錄或文件的內(nèi)容
hdfs.chmod(path, mode) #修改制定目錄的操作權(quán)限
hdfs.chown(path, owner, group) #修改目錄所有者,以及用戶組
hdfs.concat(destination, paths) #將指定多個(gè)路徑paths的文件,合并成一個(gè)文件寫入到destination的路徑,并刪除源文件(The source files are deleted on successful completion.成功完成后將刪除源文件。)
hdfs.connect() #連接到名稱節(jié)點(diǎn) 這在啟動(dòng)時(shí)自動(dòng)發(fā)生。 LZ:未知作用,按字面意思,應(yīng)該是第一步HDFileSystem(host='127.0.0.1', port=8020)發(fā)生的
hdfs.delegate_token(user=None)
hdfs.df() #HDFS系統(tǒng)上使用/空閑的磁盤空間
hdfs.disconnect() #跟connect()相反,斷開連接
hdfs.du(path, total=False, deep=False) #查看指定目錄的文件大小,total是否把大小加起來一個(gè)總數(shù),deep是否遞歸到子目錄
hdfs.exists(path) #路徑是否存在
hdfs.get(hdfs_path, local_path, blocksize=65536) #將HDFS文件復(fù)制到本地,blocksize設(shè)置一次讀取的大小
hdfs.get_block_locations(path, start=0, length=0) #獲取塊的物理位置
hdfs.getmerge(path, filename, blocksize=65536) #獲取制定目錄下的所有文件,復(fù)制合并到本地文件
hdfs.glob(path) #/user/spark/abc-*.txt 獲取與這個(gè)路徑相匹配的路徑列表
hdfs.head(path, size=1024) #獲取指定路徑下的文件頭部分的數(shù)據(jù)
hdfs.info(path) #獲取指定路徑文件的信息
hdfs.isdir(path) #判斷指定路徑是否是一個(gè)文件夾
hdfs.isfile(path) #判斷指定路徑是否是一個(gè)文件
hdfs.list_encryption_zones() #獲取所有加密區(qū)域的列表
hdfs.ls(path, detail=False) #返回指定路徑下的文件路徑,detail文件詳細(xì)信息
hdfs.makedirs(path, mode=457) #創(chuàng)建文件目錄類似 mkdir -p
hdfs.mkdir(path) #創(chuàng)建文件目錄
hdfs.mv(path1, path2) #將path1移動(dòng)到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指定讀取字節(jié)的起始點(diǎn),length讀取長(zhǎng)度,delimiter確保讀取在分隔符bytestring上開始和停止
>>> hdfs.read_block('/data/file.csv', 0, 13) 
b'Alice, 100\nBo'
>>> hdfs.read_block('/data/file.csv', 0, 13, delimiter=b'\n') 
b'Alice, 100\nBob, 200'
hdfs.rm(path, recursive=True) #刪除指定路徑recursive是否遞歸刪除
hdfs.tail(path, size=1024) #獲取 文件最后一部分的數(shù)據(jù)
hdfs.touch(path) #創(chuàng)建一個(gè)空文件
hdfs.walk(path) #遍歷文件樹

補(bǔ)充知識(shí):HDFS命令批量創(chuàng)建文件夾和文件

批量創(chuàng)建測(cè)試文件夾:

hadoop fs -mkdir -p /user/hivedata/temp/201912311001/d={27..30}/h={10..17}/m5={5,15,25}/

批量創(chuàng)建測(cè)試文件:

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使用hdfs3模塊對(duì)hdfs進(jìn)行操作詳解就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • python輕量級(jí)orm框架 peewee常用功能速查詳情

    python輕量級(jí)orm框架 peewee常用功能速查詳情

    Peewee是一種簡(jiǎn)單而小的ORM。它有很少的(但富有表現(xiàn)力的)概念,使它易于學(xué)習(xí)和直觀的使用,感興趣的朋友可以參考下面文章的具體內(nèi)容
    2021-09-09
  • 使用python實(shí)現(xiàn)一個(gè)簡(jiǎn)單的圖片爬蟲

    使用python實(shí)現(xiàn)一個(gè)簡(jiǎn)單的圖片爬蟲

    在本文中,我們將學(xué)習(xí)如何使用Python創(chuàng)建一個(gè)簡(jiǎn)單的圖片爬蟲,我們將利用requests庫來發(fā)送HTTP請(qǐng)求,BeautifulSoup庫來解析HTML頁面,以及os和shutil庫來下載和保存圖片,通過這個(gè)教程,你將學(xué)會(huì)如何爬取網(wǎng)頁上的圖片并保存到本地,需要的朋友可以參考下
    2024-02-02
  • python openpyxl的使用方法

    python openpyxl的使用方法

    Python借助openpyxl可以對(duì)xlsx文件進(jìn)行操作,幫助大家高效辦公,處理excel文件,下面就介紹一下相關(guān)的方法,以及一個(gè)小例子。
    2021-06-06
  • 一文帶你掌握Python中enumerate函數(shù)和for循環(huán)的對(duì)比

    一文帶你掌握Python中enumerate函數(shù)和for循環(huán)的對(duì)比

    在Python編程中,循環(huán)是一項(xiàng)常見的任務(wù),而for循環(huán)是最常見的一種,然而,Python提供了enumerate函數(shù),它允許在迭代過程中訪問元素的同時(shí)獲得它們的索引,下面我們就來學(xué)習(xí)一下二者的區(qū)別吧
    2023-11-11
  • Python+OpenCV實(shí)現(xiàn)信用卡數(shù)字識(shí)別的方法詳解

    Python+OpenCV實(shí)現(xiàn)信用卡數(shù)字識(shí)別的方法詳解

    這篇文章主要介紹了如何利用python?opencv實(shí)現(xiàn)信用卡數(shù)字識(shí)別,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-09-09
  • Django中的靜態(tài)文件管理過程解析

    Django中的靜態(tài)文件管理過程解析

    這篇文章主要介紹了Django中的靜態(tài)文件管理過程解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-08-08
  • Python使用正則表達(dá)式實(shí)現(xiàn)文本替換的方法

    Python使用正則表達(dá)式實(shí)現(xiàn)文本替換的方法

    這篇文章主要介紹了Python使用正則表達(dá)式實(shí)現(xiàn)文本替換的方法,結(jié)合實(shí)例形式分析了Python使用正則表達(dá)式實(shí)現(xiàn)文本替換的具體操作步驟與相關(guān)使用注意事項(xiàng),需要的朋友可以參考下
    2017-04-04
  • 使用python對(duì)多個(gè)txt文件中的數(shù)據(jù)進(jìn)行篩選的方法

    使用python對(duì)多個(gè)txt文件中的數(shù)據(jù)進(jìn)行篩選的方法

    今天小編就為大家分享一篇使用python對(duì)多個(gè)txt文件中的數(shù)據(jù)進(jìn)行篩選的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2019-07-07
  • Python中urllib2模塊的8個(gè)使用細(xì)節(jié)分享

    Python中urllib2模塊的8個(gè)使用細(xì)節(jié)分享

    這篇文章主要介紹了Python中urllib2模塊的8個(gè)使用細(xì)節(jié)分享,本文講解了Proxy設(shè)置、Timeout設(shè)置、加入特定Header、Redirect、Cookie、PUT和DELETE方法等內(nèi)容,需要的朋友可以參考下
    2015-01-01
  • python中安裝django模塊的方法

    python中安裝django模塊的方法

    這篇文章主要介紹了python中安裝django模塊的方法,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-03-03

最新評(píng)論