国产另类ts人妖一区二区_欧美肥老太做爰视频_快穿高h肉_国产欧美综合在线

當前位置: 首頁 / 技術干貨 / 正文
Python操作HDFS

2023-02-23

   文件 hdfs

Python操作HDFS

  三方庫的安裝

  Python原生并沒有對HDFS的支持,如果想要使用Python來操作HDFS,需要我們安裝第三方庫 hdfs

  pip install hdfs

  安裝完畢后,我們就可以使用python來操作HDFS咯。

  客戶端的獲取

  在操作HDFS的時候,第一步我們要做的就是獲取到HDFS的客戶端,建立與HDFS的連接。

  在hdfs模塊中有兩個類,都是HDFS的客戶端:Client和InsecureClient

  ●Client: HDFS客戶端類,其中定義了對HDFS的操作,但是不能指定操作的用戶

  ●InsecureClient: Client的子類,可以指定操作的用戶

  from hdfs import InsecureClient

  """

  1. 創建客戶端對象,需要設置兩個參數

  url: 連接到的HDFS的namenode,需要設置的是webui的地址

  user: 設置操作HDFS的用戶

  """

  client = InsecureClient(url="http://qianfeng01:9870", user="root")

  增操作

  # 1. 創建一個新的文件夾

  client.makedirs("/py_dir")

  # 2. 上傳本地文件

  client.upload("/py_dirs", "./1. Python操作HDFS.py", )

  # 3. 直接創建文件

  client.write("/py_dir/test.file", data="this is a py file", overwrite=True, enco

  刪操作

  # 1. 刪除文件

  client.delete("/py_dir/test.file")

  # 2. 刪除文件夾,默認只能刪除空的文件夾

  # 如果需要刪除非空的文件夾,需要設置recursive為True,實現遞歸刪除

  client.delete("/py_dir", recursive=True)

  改操作

  # 1. 重命名文件、文件夾

  client.rename("/py_dir", "/py_dirs")

  查操作

  # 1. 列舉一個文件夾下有什么文件,返回一個list

  sub = client.list("/")

  print(type(sub), sub)

  # 2. 查看文件屬性

  # strict:

  # True: 嚴格模式,如果指定的文件/文件夾不存在,則會拋異常。默認。

  # False: 非嚴格模式,如果指定的文件/文件夾不存在,不會拋異常,返回None。

  # 返回值是一個字典:

  # blockSize: 塊大小

  # accessTime: 訪問時間

  # childrenNum: 子文件的數量,對于文件來說就是0

  # fileId: 文件ID

  # group: 所屬用戶組

  # length: 文件大小(字節)

  # modificationTime: 文件修改時間

  # owner: 所屬用戶

  # permission: 文件權限

  # replication: 副本數量

  # type : 文件類型 DIRECTORY|FILE

  print(client.status("/py_dirs"))

  # 3. 查看文件中的內容,返回_GeneratorContextManager

  res = client.read("/py_dirs/1. Python操作HDFS.py")

  print(res)

  res.close()

  with client.read("/py_dirs/1. Python操作HDFS.py") as file:

  # read會將讀取到的數據存儲到data中,用utf8解碼即可

  print(file.data.decode("utf8"))

  # 4. 對于大型的文件,如果直接讀取到內存中,可能會造成內存溢出的情況。因此需要分段讀取

  file_path = "/py_dirs/1. Python操作HDFS.py"

  offset = 0

  length = 128

  file_length = client.status(file_path).get("length")

  while offset < file_length:

  with client.read(file_path, offset=offset, length=length) as reader:

  print(reader.data.decode("utf8"))

  offset += length

  # 5. 下載文件到本地

  client.download("/py_dirs", "./")

好程序員公眾號

  • · 剖析行業發展趨勢
  • · 匯聚企業項目源碼

好程序員開班動態

More+
  • HTML5大前端 <高端班>

    開班時間:2021-04-12(深圳)

    開班盛況

    開班時間:2021-05-17(北京)

    開班盛況
  • 大數據+人工智能 <高端班>

    開班時間:2021-03-22(杭州)

    開班盛況

    開班時間:2021-04-26(北京)

    開班盛況
  • JavaEE分布式開發 <高端班>

    開班時間:2021-05-10(北京)

    開班盛況

    開班時間:2021-02-22(北京)

    開班盛況
  • Python人工智能+數據分析 <高端班>

    開班時間:2021-07-12(北京)

    預約報名

    開班時間:2020-09-21(上海)

    開班盛況
  • 云計算開發 <高端班>

    開班時間:2021-07-12(北京)

    預約報名

    開班時間:2019-07-22(北京)

    開班盛況
IT培訓IT培訓
在線咨詢
IT培訓IT培訓
試聽
IT培訓IT培訓
入學教程
IT培訓IT培訓
立即報名
IT培訓

Copyright 2011-2023 北京千鋒互聯科技有限公司 .All Right 京ICP備12003911號-5 京公網安備 11010802035720號