2.如何使用python連線hdfs
阿新 • • 發佈:2018-11-03
總所周知,python是一門很強大的語言,主要在於它有著豐富的第三方模組,當然連線hdfs的模組也不例外。
在python中有一個模組也叫hdfs,可以使用它連線hadoop的hdfs。直接pip install hdfs即可。我們使用python的hdfs可以達到和hadoop shell一樣的效果
import hdfs # 1.如何連線hadoop上的hdfs ''' 引數: def __init__(self, url, root=None, proxy=None, timeout=None, session=None): url:這裡的url就是我們在瀏覽器檢視hdfs時的連線,也就是ip:埠 root:指定hdfs的根目錄 proxy:指定使用者的登入身份 timeout:設定的超時時間 session:requests模組裡面的session類的例項,用來發出請求 ''' client = hdfs.Client("http://ubuntu:50070") # 2.檢視路徑的具體資訊 ''' 引數: def status(self, hdfs_path, strict=True): hdfs_path:路徑,這裡我們指定/,也就是根目錄 strict:嚴格模式,預設為True,表示路徑不存在就會丟擲異常,為False路徑不存在則返回None ''' client.status(hdfs_path="/") # 3.檢視指定目錄裡的檔案或目錄 ''' 引數: def list(self, hdfs_path, status=False): hdfs_path:路徑 status:預設為False,如果為True,則不僅顯示有哪些檔案或目錄,還顯示具體的資訊 ''' client.list("/") # 4.建立目錄 ''' 引數: def makedirs(self, hdfs_path, permission=None): hdfs_path:建立的目錄,值得一提的是,這個是可以遞迴建立的 permission:設定許可權,比如777,可讀可寫可執行 ''' client.makedirs("/古明地覺/hello.txt") # 5.重新命名 ''' 引數: def rename(self, hdfs_src_path, hdfs_dst_path): hdfs_src_path:原始檔 hdfs_dst_path:新檔案 ''' client.rename("/古明地覺/hello.txt", "/古明地覺/hello_satori.txt") # 6.刪除 ''' 引數: def delete(self, hdfs_path, recursive=False): hdfs_path:路徑 recursive:表示是否遞迴,預設為False ''' client.delete("/古明地覺/hello_satori.txt", recursive=True) # 7.上傳檔案 ''' 引數: def upload(self, hdfs_path, local_path, overwrite=False, n_threads=1, temp_dir=None, chunk_size=2 ** 16, progress=None, cleanup=True, **kwargs): hdfs_path:hdfs路徑 local_path:本地檔案路徑,仔細一看這和hdfs dfs -put 本地 hdfs,剛好是相反的。表示從本地上傳檔案到hdfs overwrite:就是遇見同名的,是否覆蓋 n_threads:啟動的執行緒數 temp_dir:當overwrite=true時,遠端檔案一旦存在,則會在上傳完之後進行交換 chunk_size:檔案上傳的大小區間 progress:回撥函式來跟蹤進度,為每一chunk_size位元組。它將傳遞兩個引數,檔案上傳的路徑和傳輸的位元組數。一旦完成,-1將作為第二個引數 cleanup:如果在上傳任何檔案時發生錯誤,則刪除該檔案 ''' client.upload("/", "/home/satori/Desktop/diary") # 8.下載檔案 ''' 引數: def download(self, hdfs_path, local_path, overwrite=False, n_threads=1, temp_dir=None, **kwargs): hdfs_path:hdfs檔案路徑 local_path:本地檔案路徑,表示從hdfs下載檔案到本地 ''' client.download("/hello.txt", "/home/satori/Desktop/hello.txt")
但當我們想建立檔案的時候,卻出現瞭如下錯誤
不要怕,這個只需要修改一下配置檔案core-site.xml即可。
然後重啟hadoop叢集