python:操作 hdfs

615 阅读1分钟

回顾

 首先回顾下,用hadoop的命令行是如何操作hdfs的。
 上传文件
 hadoop fs -put /home/ai_user/xxx.txt  /
 其中-put上传,本地路径/home/ai_user/xxx.txt,上传到HDFS的路径是 /
 

安装必要的库包

pip install pyhdfs

python上传数据文件到hdfs

from pyhdfs import HdfsClient

client = HdfsClient(hosts='hadoop1:50070',
                    user_name='root')
client.copy_from_local('/home/hadoop1/software/data/one.txt', '/1')
# 本地文件绝对路径, HDFS目录必须不存在
其中hosts的参数为hdfs的url。
user_name是本机的用户可以使用hadoop的用户。
copy_from_local的第一个参数为本地路径。第二个参数为HDFS的路径,且这个路径不能已经存在。

python读取hdf数据文件

from pyhdfs import HdfsClient

client=HdfsClient(hosts='hadoop1:50070')#hdfs的主机用户名和端口
res=client.open('/two.txt')#hdfs文件路径,从根目录计
for r in res:
  line=str(r,encoding='utf8')#open后是二进制,str()转换为字符串
  print(line)

Python创建新文件

from pyhdfs import HdfsClient

client = HdfsClient(hosts='hadoop1:50070',user_name='root')
str='666'
client.create('/py.txt',str)#创建新文件,写入字符串