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单元测试依赖。
.apache.hadoop hadoop-mon 3.1.4 .apache.hadoop hadoop-hdfs 3.1.4 .apache.hadoop hadoop-client 3.1.4 junit junit 4.11 HDFS文件上传
在这里编写测试类即可,新建一个java文件main.java
这里的FileSyste一开始是本地的文件系统,需要初始化为HDFS的文件系统
import .apache.hadoop.conf.Configuration; import .apache.hadoop.fs.FileSystem; import .apache.hadoop.fs.Path; import .junit.Test; import java..URI; public class main { @Test public void testPut() thros Exception { // 获取FileSystem类的方法有很多种,这里只写一种(比较常用的是使URI) Configuration configuration = ne Configuration(); // user是Hadoop集群的账号,连接端口默认9000 FileSystem fileSystem = FileSystem.get( ne URI("hdfs://192.168.147.128:9000"), configuration, "hadoop"); // 将f:/sord.txt 上传到 /user/sord.txt fileSystem.copyFromLocalFile( ne Path("f:/sord.txt"), ne Path("/user/sord.txt")); fileSystem.close(); } }
在对应的HDFS中,就会看见我刚刚上传的机器学习相关的停用词。
HDFS文件下载
由于每次都需要初始化FileSystem,比较懒的我直接使用@Before每次加载。
HDFS文件下载的API接口是copyToLocalFile,具体代码如下。
@Test public void testDonload() thros Exception { Configuration configuration = ne Configuration(); FileSystem fileSystem = FileSystem.get( ne URI("hdfs://192.168.147.128:9000"), configuration, "hadoop"); fileSystem.copyToLocalFile( false, ne Path("/user/sord.txt"), ne Path("s.txt"), true); 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 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'] >>> client.delete("/test") True >>> client.donload('/hadoop-3.1.4.tar.gz','C:\Users\YIUYE\Desk') 'C:\Users\YIUYE\Desk\hadoop-3.1.4.tar.gz' >>> client.upload('/','C:\Users\YIUYE\Desk\demo.txt') >>> client.list('/') '/demo.txt' >>> client.list('/') ['demo.txt', 'hadoop-3.1.4.tar.gz'] >>> # 上传demo.txt 内容Hello hdfs >>> ith client.read("/demo.txt") as reader: ... print(reader.read()) b'Hello hdfs '
相对于Java API,Python API连接实在简单。
人工智能培训
- 真正能和人交流的机器人什么时候实现
- 国产机器人成功完成首例远程冠脉介入手术
- 人工智能与第四次工业革命
- 未来30年的AI和物联网
- 新三板创新层公司东方水利新增专利授权:“一
- 发展人工智能是让人和机器更好地合作
- 新春贺喜! 经开区持续推进工业互联网平台建设
- 以工业机器人为桥 传统企业如何趟过智造这条河
- 山立滤芯SAGL-1HH SAGL-2HH
- 2015国际智能星创师大赛火热报名中!
- 未来机器人会咋看人类?递归神经网络之父-像蚂
- 成都新川人工智能创新中心二期主体结构封顶
- 斯坦德机器人完成数亿元人民币C轮融资,小米产
- 到2020年,智能手机将拥有十项AI功能,有些可能
- 寻找AI机器人的增长“跳板”:老龄化为支点的产
- 力升高科耐高温消防机器人参加某支队性能测试