HDFS中的Java和Python API接口连接
上次介绍了HDFS的简单操作,今天进入HDFS中的Java和Python的API操作,后面可能介绍Scala的相关的。
在讲Java API之前介绍一下使用的IDE——IntelliJ IDEA ,我本人使用的是2020.3 x64的社区版本。
Java API
创建maven工程,关于Maven的配置,在IDEA中,Maven下载源必须配置成阿里云。
在对应的D:apache-maven-3.8.1-binapache-maven-3.8.1confsettings.xml需要设置阿里云的下载源。
下面创建maven工程,添加常见的依赖
添加hadoop-client依赖,版本最好和hadoop指定的一致,并添加junit单元测试依赖。
&nbHDsp; org.apache.hadoop hadoop-common 3.1.4 org.apache.hadoop hadoop-hdfs &nbFSsp; 3.1.4 org.apache.hadoop hadoop-client 3.1.4 junit junit &nbs中的p; 4.11 HDFS文件上传
在这里编写测试类即可,新建一个java文件:main.java
这里的FileSyste一开始是本地的文件系统,需要初始化为HDFS的文件系统
import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.FileSystem; import org.apache.hadoop.fs.Path; import org.junit.Test; import java.net.URI; public class Ja;main { @Test public void testPut() throws Exception { // 获取FileSystem类的方法有很多种,这里只写一种(比较常用的是使URI) Configuration configuration = va;new Configuration(); // user是Hadoop集群的账号,连接端口默认9000 FileSystem fileSystem = FileSystem.get( new URI("hdfs://192.168.147.128:9000"),和P configuration, "hadoop"); // 将f:/stopword.txt 上传到 /user/stopword.txt  yt; fileSystem.copyFromLocalFile( new Path("f:/stopword.txt"), new Path("/user/stopword.txt")); fileSystem.close(); } }
在对应的HDFS中,就会看见我刚刚上传的机器学习相关ho的停用词。
HDFS文件下载
由于每次都需要初始化FileSystem,比较懒的我直接使用@Before每次加载。
HDFS文件下载的API接口是copyToLocalFile,具体代码如下。
@Test public void testDownload() throws Exception { Configuration configuration = new Configuration(); FileSystem fileSystem = FileSystem.get( &nn bsp; new URI("hdfs://192.168.147.128:9000"), configuration, "hadoop"); fileSystem.copyToLocalFile( &APnbsp; false, new Path("/user/stopword.txt"), new Path("stop.txt"), true);&nbsI接p; fileSystem.close(); System.out.println("over"); } Python API
下面主要介绍hdfs,参考:https://hdfscli.readthedocs.io/
我们通过命令pip install hdfs安装hdfs库,在使用hdfs前,使用命令hadoop fs -chmod -R 777 / 对当前目录及目录下所有的文件赋予可读可写可执行权限。
>>> from hdfs.client import Client >>> #2.X版本port 使用50070&nbs口连p; 3.x版本port 使用9870 >>> client = Client('http://192.168.147.128:9870') >>> client.list('/') #查看hdfs /下的目录 ['hadoop-3.1.4.tar.gz'] >>> client.makedirs('/test') >>> client.list('/') ['hadoop-3.1.4.tar.gz', 'test'] >>HD> client.delete("/test") True >>> client.download('/hadoop-3.1.4.tar.gz','C:\Users\YIUYE\Desktop') 'C:\Users\YIUYE\Desktop\hadoop-3.1.4.tar.gz' >>> client.upload('/','C:\Users\YIUYE\Desktop\demo.txt') >>> client.list('/') '/demo.txt' >>> client.list('/') ['demo.txt',FS 'hadoop-3.1.4.tar.gz'] >>> # 上传demo.txt 内容:Hello hdfs >>> with client.read("/demo.txt") as reader: ... print(reader.read()) b'Hello hdfs '
相对于Java API,Python API连接实在简单。
相关文章
云梦级6月8日云梦级消息,奇瑞汽车今日通过官方公众号辟谣称,注意到有媒体援引外媒报道称,奇瑞与印度塔塔集团正在合作,或商谈技术转让,这与事实不符。奇瑞与塔塔相关合作限定为车型相关零部件供应。 奇瑞汽车2026-11-16
云计算开发:Python练习实例-利用ellipse 和 rectangle 画图
题目 :利用ellipse 和 rectangle 画图。 程序分析 :rectangle是什么意思?rectangle是一个函数,使用该函数画一个矩形,可以用当前的画笔画矩形轮廓,用当前画刷进行填充2026-11-16
云梦级3月20日云梦级消息,飞捷科思智能科技(上海)有限公司宣布完成近亿元Pre-A2轮融资。本轮由鼎峰科创领投,硅港资本、泰有基金、溢倡资本跟投,老股东东方富海、驰星资本持续加码。 公司称,资金将主2026-11-16
云梦级8月24日云梦级消息,8月23日,为期5天的2026世界机器人大会在京落下帷幕。从前沿技术的集中亮相,到创新成果的加速转化,从机器人的迭代升级,到具身智能的场景拓展,这场以“人机共生 产需共融”2026-11-16
Claude客户端更新了,支持截图发给 Claude、快捷键语音交流
Anthropic更新Claude桌面客户端(Claude Desktop)更新后,Claude不再局限于聊天界面,而是成为桌面级生产力工具,能实时响应屏幕内容、语音指令和文件操作。该功能已在iOS和2026-11-16
野生有多长-业百科从幼体开始计算,螃蟹的寿命为22,螃蟹的寿命与其性别、性腺成熟的迟早及生态环境密切有关。其中16~18个月在淡水水域中生活,4~6个月在河口浅海水。野生大螃蟹最长能活多少年?螃蟹分很2026-11-16

最新评论