hdfs user 连接_Python入门操作HDFS
生活随笔
收集整理的這篇文章主要介紹了
hdfs user 连接_Python入门操作HDFS
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
點擊上方藍色字體,關注我們
讀完需?7?分鐘
?速讀需 3?分鐘?
在了解了Hadoop的基本使用后,需要通過編程語言進一步操作。對于沒有Java基礎的運維人,Python如何操作hdfs也就成了我們優先去學習的。
基礎配置
#1.安裝mkvirtualenv -p python3.6 -a hadoop hadooppip install hdfs#2.配置vim ~/.hdfscli.cfg#全局默認配置[global]default.alias = dev#測試環境hadoop[dev.alias]url = http://dev.namenode:portuser = ann#生產環境hadoop[prod.alias]url = http://prod.namenode:portroot?=?/jobs/命令行界面
1.上傳、下載文件
# 命令幫助# hdfscli -hCommands:downloadinteractiveupload#1. 下載文件hdfscli download hadoop/input/anaconda-ks.cfg .#2. 上傳文件hdfscli upload navicat121_mysql_cs_x64.tar.gz /hadoop/input/#3. 重定向到文件hdfscli?download?hadoop/input/anaconda-ks.cfg?-?>>?txt交互模式
交互模式通過hdfs.client.Client進行實例化。
# hdfscliWelcome to the interactive HDFS python shell.The HDFS client is available as `CLIENT`.>>> CLIENT.list('/hadoop/input')['anaconda-ks.cfg', 'hadoop-2.7.2.tar.gz', 'navicat121_mysql_cs_x64.tar.gz']>>> CLIENT.status('/hadoop/input/hadoop-2.7.2.tar.gz'){'accessTime': 1604643646211, 'blockSize': 134217728, 'childrenNum': 0, 'fileId': 16389, 'group': 'supergroup', 'length': 212046774, 'modificationTime': 1603240571897, 'owner': 'root', 'pathSuffix': '', 'permission': '644', 'replication': 3, 'storagePolicy': 0, 'type': 'FILE'}>>> CLIENT.delete('/hadoop/input/anaconda-ks.cfg')Truepython綁定
1.實例化
# 連接NameNodefrom hdfs import InsecureClientclient = InsecureClient('http://10.10.10.56:50070', user='root')# 讀取開發環境的hadoop集群from hdfs import Configclient?=?Config().get_client('dev')2.讀寫文件
#1.讀文件# 判斷路徑是否存在if not client.content('/hadoop/input/test.py', strict=False) is None: with client.read('/hadoop/input/test.py',encoding='utf-8', delimiter='\n') as reader: for line in reader: print(line)#2.寫文件import jsondata = { 'name': 'jack', 'age': 20}json_to_str = json.dumps(data)client.write('/hadoop/input/data.json',?data=json_to_str,?encoding='utf-8')?對于hdfs中路徑不存在,會拋出一個HdfsError的異常,但是可以通過status()和content()自帶參數strict=False來判斷路徑是否存在:
#/hadoop/in/test.py路徑不存在print(client.content('/hadoop/in/test.py', strict=False))#打印輸出結果None3.上傳下載文件
#1.上傳文件client.upload('/hadoop/input', './test.py')#2.下載文件client.download('/hadoop/input/data.json',?'./data.json')4.路徑擴展
resolve()提供路徑擴展功能,并允許使用特殊標記來標識路徑。例如,它當前支持#LATEST標記,該標記可擴展到給定文件夾內的最后修改文件。
#1.輸出絕對路徑,根據參數自動補全絕對路徑,但此路徑不會檢查是否存在print(client.resolve('hadoop/input'))print(client.resolve('input'))#打印輸出結果/hadoop/input/input#2.#LATEST標記,定位文件內最后修改的文件print(client.resolve('hadoop/input/#LATEST'))#打印輸出結果/hadoop/input/data1.json#3.實例,data1.json為新增文件print(client.resolve('hadoop/input/#LATEST'))with client.read('hadoop/input/#LATEST') as reader: data = reader.read() print(data)#打印輸出結果/hadoop/input/data1.jsonb'{"name":?"Sam",?"age":?20}'hadoop完全分布式部署
Prometheus+k8s之告警通知
grafana+alertmanager實現微信報警
滴滴夜鶯:從監控告警系統向運維平臺演化
kubedog:解決K8S在CI/CD中無法持續追蹤問題
關注我們總結
以上是生活随笔為你收集整理的hdfs user 连接_Python入门操作HDFS的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: duilib 子窗口位置_Duilib学
- 下一篇: eta 深度学习 参数_深度学习中的参数