简介
使用python对hdfs进行操作. 这里选择使用hdfs库。
相关链接
安装
pip install hdfs
介绍常用使用
创建一个hdfs client
txz-data0:50070是hdfs namenode
的ip地址. 使用hadoop用户去操作
client = InsecureClient("http://txz-data0:50070", user="hadoop")
删除文件
client.delete("/tmp/test.txt")
从hdfs中下载文件到本地
client.download("hdfs路径", "本地路径")
查看目录
client.list("/tmp")
文件或文件夹的状态
client.status("/tmp")
文件的上传
client.upload("hdfs路径", "本地路径")
文件的读操作
with client.read('/tmp/test.txt') as reader:
content = reader.read()
文件的写操作
注意: 写多条数据时,不会自动换行,需要自己添加\n
换行
两种形式的写入
from json import dump, dumps
client.write('/tmp/test.txt', encoding='utf-8') as writer:
writer.write("hello")
client.write('/tmp/test.tx', data="world", encoding='utf-8')
配置文件
每次操作hdfs都需要在代码中输入hdfs地址及user用户。可以写入到配置文件~/.hdfscli.cfg
中,然后从代码中读取配置获取client
,这样方便许多.
配置文件
[global]
default.alias = dev
[dev.alias]
url = http://txz-data0:50070
user = hadoop
使用配置文件获取client
client = Config().get_client('dev')
应用
追加写入数据到hdfs中
client.wirte
这个接口有个append
参数,但是如果文件不存在,则会报错,所以需要先创建一个空的文件,然后再在程序后面不断的append
到文件中.
# 创建文件. 如果没有输入data为空字符串,则不会创建文件
client.write("/tmp/test.txt", data="")
.....
# 不断的追加
client.write("/tmp/test.txt", data="hello", append=True)
欢迎关注,互相学习,共同进步~
我的个人博客
我的微信公众号:编程黑洞