本文共 1129 字,大约阅读时间需要 3 分钟。
使用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, dumpsclient.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:50070user = hadoop
使用配置文件获取client
client = Config().get_client('dev')
client.wirte
这个接口有个append
参数,但是如果文件不存在,则会报错,所以需要先创建一个空的文件,然后再在程序后面不断的append
到文件中.
# 创建文件. 如果没有输入data为空字符串,则不会创建文件client.write("/tmp/test.txt", data="").....# 不断的追加client.write("/tmp/test.txt", data="hello", append=True)
转载地址:http://fakjn.baihongyu.com/