成人视屏在线观看-国产99精品-国产精品1区2区-欧美一级在线观看-国产一区二区日韩-色九九九

您的位置:首頁技術(shù)文章
文章詳情頁

python讀取hdfs上的parquet文件方式

瀏覽:8日期:2022-07-22 15:00:03

在使用python做大數(shù)據(jù)和機(jī)器學(xué)習(xí)處理過程中,首先需要讀取hdfs數(shù)據(jù),對(duì)于常用格式數(shù)據(jù)一般比較容易讀取,parquet略微特殊。從hdfs上使用python獲取parquet格式數(shù)據(jù)的方法(當(dāng)然也可以先把文件拉到本地再讀取也可以):

1、安裝anaconda環(huán)境。

2、安裝hdfs3。

conda install hdfs3

3、安裝fastparquet。

conda install fastparquet

4、安裝python-snappy。

conda install python-snappy

5、讀取文件

##namenode mode:from hdfs3 import HDFileSystemfrom fastparquet import ParquetFile hdfs = HDFileSystem(host=IP, port=8020)sc = hdfs.open pf = ParquetFile(filename, open_with=sc)df = pf.to_pandas() ##返回pandas的DataFrame類型 ##HA mode:from hdfs3 import HDFileSystemfrom fastparquet import ParquetFile host = 'nameservice1'conf = { 'dfs.nameservices':'nameservice1', ......}hdfs = HDFileSystem(host = host, pars = conf)......

python訪問HDFS HA的三種方法

python訪問hdfs常用的包有三個(gè),如下:

1、hdfs3

其實(shí)從安裝便捷性和使用上來說,并不推薦hdfs3,因?yàn)樗南到y(tǒng)依賴和網(wǎng)絡(luò)要求較高,但是某些情況下使用hdfs3會(huì)比較方便,官網(wǎng)資料點(diǎn)這里。如上面介紹,IP直接訪問namenode:

from hdfs3 import HDFileSystemhdfs = HDFileSystem(host=namenode, port=8020)hdfs.ls(’/tmp’)

HA訪問:

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) ##或者下面這種配置host = 'ns1'conf = { 'dfs.nameservices':'ns1', 'dfs.ha.namenodes.ns1':'namenode122,namenode115', 'dfs.namenode.rpc-address.ns1.namenode122':'nnlab01:8020', 'dfs.namenode.servicerpc-address.ns1.namenode122':'nnlab01:8022', 'dfs.namenode.http-address.ns1.namenode122':'nnlab01:50070', 'dfs.namenode.https-address.ns1.namenode122':'nnlab01:50470', 'dfs.namenode.rpc-address.ns1.namenode115':'nnlab02:8020', 'dfs.namenode.servicerpc-address.ns1.namenode115':'nnlab02:8022', 'dfs.namenode.http-address.ns1.namenode115':'nnlab02:50070', 'dfs.namenode.https-address.ns1.namenode115':'nnlab02:50470',}hdfs = HDFileSystem(host = host, pars = conf)

2、hdfs

這種方法在使用的時(shí)候配置比較簡單,官網(wǎng)資料也比較豐富,但是需要注意的是該API可以模擬用戶訪問,權(quán)限較大。IP直接訪問:

import hdfsclient = hdfs.client.InsecureClient(url='http://namenode:50070', user='hdfs')

HA訪問:

import hdfsclient = hdfs.client.InsecureClient(url='http://namenode1:50070;http://namenode2:50070', user='hdfs')

3、pyhdfs

安裝命令:pip install PyHDFS

官網(wǎng)地址,直接訪問:

import pyhdfsclient = pyhdfs.HdfsClient(hosts='namenode:50070',user_name='hdfs')

HA訪問

import pyhdfsclient = pyhdfs.HdfsClient(hosts=['namenode1:50070','namenode2:50070'],user_name='hdfs')

補(bǔ)充知識(shí):python spark中parquet文件寫到hdfs,同時(shí)避免太多的小文件(block小文件合并)

在pyspark中,使用數(shù)據(jù)框的文件寫出函數(shù)write.parquet經(jīng)常會(huì)生成太多的小文件,例如申請了100個(gè)block,而每個(gè)block中的結(jié)果

只有幾百K,這在機(jī)器學(xué)習(xí)算法的結(jié)果輸出中經(jīng)常出現(xiàn),這是一種很大的資源浪費(fèi),那么如何同時(shí)避免太多的小文件(block小文件合并)?

其實(shí)有一種簡單方法,該方法需要你對(duì)輸出結(jié)果的數(shù)據(jù)量有個(gè)大概估計(jì),然后使用Dataframe中的coalesce函數(shù)來指定輸出的block數(shù)量

即可,具體使用代碼如下:

df.coalesce(2).write.parquet(path,mode)

這里df是指你要寫出的數(shù)據(jù)框,coalesce(2)指定了寫到2個(gè)block中,一個(gè)block默認(rèn)128M,path是你的寫出路徑,mode是寫出模式,常用的是

'overwrite'和'append'。

以上這篇python讀取hdfs上的parquet文件方式就是小編分享給大家的全部內(nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持好吧啦網(wǎng)。

標(biāo)簽: Python 編程
相關(guān)文章:
主站蜘蛛池模板: 影院成人区精品一区二区婷婷丽春院影视 | 美女一级毛片免费观看 | 私人毛片免费高清影视院丶 | 国产美女作爱视频 | 99在线热播精品免费 | 日韩一区精品 | 成年网站在线在免费播放 | 日本又黄又爽又免费 | 和日本免费不卡在线v | 国产一级片免费看 | 九九精品激情在线视频 | 久久综合久久精品 | 国产乱码精品一区二区三区四川人 | 99热久久精品国产 | 国产成人香蕉久久久久 | 在线高清免费爱做网 | 欧美日韩国产在线人成dvd | 国产精品亚洲高清一区二区 | 精品久久久在线观看 | 欧美日韩国产在线人成dvd | 国产激情久久久久久影院 | 国产精品亚洲一区二区在线观看 | 夜间福利网站 | 久久久免费视频观看 | 高清在线观看自拍视频 | www.黄色片| 色久天堂网 | 国产精品成人网 | 国产午夜精品久久久久九九 | 亚洲第一页视频 | 国产日韩欧美久久久 | 国产成人亚洲综合无 | 人人99| 好吊妞国产欧美日韩视频 | 在线免费观看色 | 欧美第一视频 | 和老外3p爽粗大免费视频 | 亚欧在线 | 国产97在线观看 | 免费视频久久看 | 国产91精品一区 |