小編這次要給大家分享的是詳解Python中API如何操作Hadoop hdfs,文章內(nèi)容豐富,感興趣的小伙伴可以來(lái)了解一下,希望大家閱讀完這篇文章之后能夠有所收獲。
創(chuàng)新互聯(lián)公司專注于企業(yè)營(yíng)銷型網(wǎng)站、網(wǎng)站重做改版、威寧網(wǎng)站定制設(shè)計(jì)、自適應(yīng)品牌網(wǎng)站建設(shè)、H5頁(yè)面制作、商城網(wǎng)站制作、集團(tuán)公司官網(wǎng)建設(shè)、成都外貿(mào)網(wǎng)站建設(shè)公司、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁(yè)設(shè)計(jì)等建站業(yè)務(wù),價(jià)格優(yōu)惠性價(jià)比高,為威寧等各大城市提供網(wǎng)站開(kāi)發(fā)制作服務(wù)。1:安裝
由于是windows環(huán)境(linux其實(shí)也一樣),只要有pip或者setup_install安裝起來(lái)都是很方便的
>pip install hdfs
2:Client——?jiǎng)?chuàng)建集群連接
> from hdfs import *
> client = Client("http://s100:50070")
其他參數(shù)說(shuō)明:
classhdfs.client.Client(url, root=None, proxy=None, timeout=None, session=None)
url:ip:端口
root:制定的hdfs根目錄
proxy:制定登陸的用戶身份
timeout:設(shè)置的超時(shí)時(shí)間
session:連接標(biāo)識(shí)
client = Client("http://127.0.0.1:50070",root="/",timeout=100,session=False)
>>> client.list("/")
[u'home',u'input', u'output', u'tmp']
3:dir——查看支持的方法
>dir(client)
4:status——獲取路徑的具體信息
其他參數(shù):
status(hdfs_path, strict=True)
hdfs_path:就是hdfs路徑
strict:設(shè)置為T(mén)rue時(shí),如果hdfs_path路徑不存在就會(huì)拋出異常,如果設(shè)置為False,如果路徑為不存在,則返回None
5:list——獲取指定路徑的子目錄信息
>client.list("/")
[u'home',u'input', u'output', u'tmp']
其他參數(shù):
list(hdfs_path, status=False)
status:為T(mén)rue時(shí),也返回子目錄的狀態(tài)信息,默認(rèn)為Flase
6:makedirs——?jiǎng)?chuàng)建目錄
>client.makedirs("/123")
其他參數(shù):makedirs(hdfs_path, permission=None)
permission:設(shè)置權(quán)限
>client.makedirs("/test",permission=777)
7: rename—重命名
>client.rename("/123","/test")
8:delete—?jiǎng)h除
>client.delete("/test")
其他參數(shù):
delete(hdfs_path, recursive=False)
recursive:刪除文件和其子目錄,設(shè)置為False如果不存在,則會(huì)拋出異常,默認(rèn)為False
9:upload——上傳數(shù)據(jù)
>client.upload("/test","F:\[PPT]Google Protocol Buffers.pdf");
其他參數(shù):
upload(hdfs_path, local_path, overwrite=False, n_threads=1, temp_dir=None,
chunk_size=65536,progress=None, cleanup=True, **kwargs)
overwrite:是否是覆蓋性上傳文件
n_threads:?jiǎn)?dòng)的線程數(shù)目
temp_dir:當(dāng)overwrite=true時(shí),遠(yuǎn)程文件一旦存在,則會(huì)在上傳完之后進(jìn)行交換
chunk_size:文件上傳的大小區(qū)間
progress:回調(diào)函數(shù)來(lái)跟蹤進(jìn)度,為每一chunk_size字節(jié)。它將傳遞兩個(gè)參數(shù),文件上傳的路徑和傳輸?shù)淖止?jié)數(shù)。一旦完成,-1將作為第二個(gè)參數(shù)
cleanup:如果在上傳任何文件時(shí)發(fā)生錯(cuò)誤,則刪除該文件
10:download——下載
>client.download("/test/NOTICE.txt","/home")
11:read——讀取文件
withclient.read("/test/[PPT]Google Protocol Buffers.pdf") as reader:
print reader.read()
其他參數(shù):
read(*args, **kwds)
hdfs_path:hdfs路徑
offset:設(shè)置開(kāi)始的字節(jié)位置
length:讀取的長(zhǎng)度(字節(jié)為單位)
buffer_size:用于傳輸數(shù)據(jù)的字節(jié)的緩沖區(qū)的大小。默認(rèn)值設(shè)置在HDFS配置。
encoding:制定編碼
chunk_size:如果設(shè)置為正數(shù),上下文管理器將返回一個(gè)發(fā)生器產(chǎn)生的每一chunk_size字節(jié)而不是一個(gè)類似文件的對(duì)象
delimiter:如果設(shè)置,上下文管理器將返回一個(gè)發(fā)生器產(chǎn)生每次遇到分隔符。此參數(shù)要求指定的編碼。
progress:回調(diào)函數(shù)來(lái)跟蹤進(jìn)度,為每一chunk_size字節(jié)(不可用,如果塊大小不是指定)。它將傳遞兩個(gè)參數(shù),文件上傳的路徑和傳輸?shù)淖止?jié)數(shù)。稱為一次與- 1作為第二個(gè)參數(shù)。
問(wèn)題:
1.
hdfs.util.HdfsError: Permission denied: user=dr.who, access=WRITE, inode="/test":root:supergroup:drwxr-xr-x
解決辦法是:在配置文件hdfs-site.xml中加入
dfs.permissions false
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。