python3操作HDFS

直接貼代碼

# -*- coding: utf-8 -*-
"""
Created on Thu Aug  9 09:09:56 2018

@author: admin
"""
from hdfs import Client
#url:ip:端口,root:制定的hdfs根目錄,proxy:制定登陸的用戶身份,timeout:設置的超時時間
client = Client("http://localhost:50070",root="/",timeout=100,session=False)

def main():
#    list(hdfs_path, status=False),status:爲True時,也返回子目錄的狀態信息,默認爲Flase
    client.list("/")
    '''
    status(hdfs_path, strict=True),
    hdfs_path:就是hdfs路徑
    strict:設置爲True時,如果hdfs_path路徑不存在就會拋出異常,
    如果設置爲False,如果路徑爲不存在,則返回None
    '''
    client.status("/")
#   makedirs(hdfs_path, permission=None),permission:設置權限
    client.makedirs("/test")
#   rename(hdfs_path, local_path)   
    client.rename("/test","/new_name")
    '''
    delete(hdfs_path, recursive=False)
    recursive:刪除文件和其子目錄.
    設置爲False如果不存在,則會拋出異常,默認爲False
    '''
    client.delete("/new_name")
    '''
    upload(hdfs_path, local_path, overwrite=False, n_threads=1, temp_dir=None, 
    chunk_size=65536,progress=None, cleanup=True, **kwargs)
    overwrite:是否是覆蓋性上傳文件
    n_threads:啓動的線程數目
    temp_dir:當overwrite=true時,遠程文件一旦存在,則會在上傳完之後進行交換
    chunk_size:文件上傳的大小區間
    progress:回調函數來跟蹤進度,爲每一chunk_size字節。它將傳遞兩個參數,
    文件上傳的路徑和傳輸的字節數。一旦完成,-1將作爲第二個參數
    cleanup:如果在上傳任何文件時發生錯誤,則刪除該文件
    '''
    client.upload("/test","/opt/bigdata/hadoop/NOTICE.txt")
#    download(hdfs_path, local_path, overwrite=False, n_threads=1, temp_dir=None, **kwargs)參考上傳 upload
    client.download("/test/NOTICE.txt","/home")
    '''
    read(*args, **kwds)
      hdfs_path:hdfs路徑

      offset:設置開始的字節位置

      length:讀取的長度(字節爲單位)

      buffer_size:用於傳輸數據的字節的緩衝區的大小。默認值設置在HDFS配置。

      encoding:制定編碼

      chunk_size:如果設置爲正數,上下文管理器將返回一個發生器產生的每一chunk_size字節而不是一個類似文件的對象

      delimiter:如果設置,上下文管理器將返回一個發生器產生每次遇到分隔符。此參數要求指定的編碼。

      progress:回調函數來跟蹤進度,爲每一chunk_size字節(不可用,如果塊大小不是指定)。
      它將傳遞兩個參數,文件上傳的路徑和傳輸的字節數。稱爲一次與- 1作爲第二個參數。
    '''
    with client.read("/test/NOTICE.txt") as reader:  
        print (reader.read())
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章