HDFS编程(基于Python语言调用HDFS API)

一.前言

1.环境

        python:3.12.0

        IDE:IDLE shell

        hadoop:3.1.3

2.文章内容
a. HDFS API 调用

        (1)导入

        (2)创建

        (3)调用

b. 查看、创建、删除目录
c. 文件的增删改查

二.内容

2.1        HDFS API 的调用
        (1)导入

        按住键盘win + R 键(组合键)进入命令窗口,输入cmd 进入window终端,输入pip install hdfs 安装HDFS类库

导入hdfs软件包后,进入IDE编程环境,导入hdfs包,开始   

pip install hdfs

import hdfs

     

(2)创建
namenode_client = hdfs.InsecureClient("http://namenode:9870","root")
print("用户创建成功")

(3)调用

函数调用,通过创建客户端对象调用方法

#查看
for i in namenode_client.list("/"):
    print(i)
print("显示根目录成功")

2.2HDFS目录管理API
(1)查看目录

通过客户端的list方法,查看指定路径下的目录

接口语法格式:list(path)

#查看
for i in namenode_client.list("/"):
    print(i)
print("显示根目录成功")

(2)创建目录

通过客户端的方法makedirs方法创建指定目录

接口语法格式:makedirs(path)

#创建
namenode_client.makedirs("/qnn")
print("目录创建成功")

(3)删除目录

通过客户端方法delete方法创建指定目录

接口语法格式:delete(path)

#删除qnn目录
namenode_client.delete("/qnn")
print("目录删除成功")

2.3文件的增删改查
(1)创建文件

创建文件依然使用makedirs方法,在创建时加入文件扩展名即可

接口语法格式:makedirs(path)

#在根目录下创建文本文件124.txt
namenode_client.makedirs("/124.txt")
print("文件创建成功")

(2)修改文件

修改文件是向文件添加内容,使用write方法添加内容

接口方法格式:write(HDFS_path,data)

#向文件qnn.txt中添加内容
namenode_client.write("124.txt","hellow,hadoop!")
print("文件内容追加成功")

(3)查看文件内容

查看文件内容使用read方法,使用方法与python自带read方法类似

接口语法格式:read(HDFS_path)

#查看文件
with namenode_client.read("124.txt") as reader:
    data = reader.read()
    print(data)

(4)删除文件

删除文件与删除目录类似,使用delete方法

接口语法格式:delete(HDFS_path)

2.3 文件的上传和下载
(1)上传文件

上传文件指从本地上传到HDFS文件系统,使用的方法是upload()

接口格式语法:upload(HDFS_path,local_path)

#上传文件
#namenode_client.upload("/","D:/data.txt")
#print("文件上传成功")

(2)下载文件

下载文件是指从HDFS文件系统中选择文件,下载到本地,使用的方法是download

接口语法格式:download(HDFS_path,local_path)

#下载文件
namenode_client.download("data.txt","D:/")
print("文件下载成功")

三、可能出现的问题

1.创建客户端失败

在创建客户端时要注意三个参数——主机名,端口号(hadoop2.0版本端口号:50070;hadoop3.0版本端口号:9870,虚拟机用户名)

2.上传文件,下载文件时出现 <requests.exceptions.ConnectionError>错误——无法解析主机名的问题

具体解决方案如下

以管理员身份运行记事本打开这个路径下文件"C:\Windows\System32\drivers\etc\hosts"在文件中添加   ip地址-域名(虚拟机主机名) 

3.删除目录时可能出现的问题

在删除目录时,如果改目录为空目录,即目录下没有文件会报<hdfs.util.HdfsError: `/usr is non empty': Directory is not empty>错误。

如何解决?

如果我们使用python自带方法help()查看delete()方法我们会发现delete方法拥有三个参数

delete(hdfs_path, recursive=False, skip_trash=True)

recursive默认为False,当你将他设置为True时,即可以递归删除你想删除的文件路径

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值