文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

HDFS中的Java和Python API接口连接

2024-12-03 06:26

关注

上次介绍了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-bin\apache-maven-3.8.1\conf\settings.xml需要设置阿里云的下载源。

下面创建maven工程,添加常见的依赖

 

添加hadoop-client依赖,版本最好和hadoop指定的一致,并添加junit单元测试依赖。

  1.  
  2.    
  3.         org.apache.hadoop 
  4.         hadoop-common 
  5.         3.1.4 
  6.    
  7.    
  8.         org.apache.hadoop 
  9.         hadoop-hdfs 
  10.         3.1.4 
  11.    
  12.    
  13.       org.apache.hadoop 
  14.       hadoop-client 
  15.       3.1.4 
  16.    
  17.    
  18.       junit 
  19.       junit 
  20.       4.11 
  21.    
  22.  

HDFS文件上传

在这里编写测试类即可,新建一个java文件:main.java

这里的FileSyste一开始是本地的文件系统,需要初始化为HDFS的文件系统

  1. import org.apache.hadoop.conf.Configuration; 
  2. import org.apache.hadoop.fs.FileSystem; 
  3. import org.apache.hadoop.fs.Path; 
  4. import org.junit.Test; 
  5. import java.net.URI; 
  6. public class main { 
  7.  
  8.     @Test 
  9.     public void testPut() throws Exception { 
  10.         //   获取FileSystem类的方法有很多种,这里只写一种(比较常用的是使URI) 
  11.         Configuration configuration = new Configuration(); 
  12.         // user是Hadoop集群的账号,连接端口默认9000 
  13.         FileSystem fileSystem = FileSystem.get( 
  14.                 new URI("hdfs://192.168.147.128:9000"), 
  15.                 configuration, 
  16.                 "hadoop"); 
  17.         // 将f:/stopword.txt 上传到 /user/stopword.txt 
  18.         fileSystem.copyFromLocalFile( 
  19.                 new Path("f:/stopword.txt"), new Path("/user/stopword.txt")); 
  20.         fileSystem.close(); 
  21.     } 

在对应的HDFS中,就会看见我刚刚上传的机器学习相关的停用词。


HDFS文件下载

由于每次都需要初始化FileSystem,比较懒的我直接使用@Before每次加载。

HDFS文件下载的API接口是copyToLocalFile,具体代码如下。

  1. @Test 
  2. public void testDownload() throws Exception { 
  3.     Configuration configuration = new Configuration(); 
  4.     FileSystem fileSystem = FileSystem.get( 
  5.             new URI("hdfs://192.168.147.128:9000"), 
  6.             configuration, 
  7.             "hadoop"); 
  8.     fileSystem.copyToLocalFile( 
  9.             false
  10.             new Path("/user/stopword.txt"), 
  11.             new Path("stop.txt"), 
  12.             true); 
  13.     fileSystem.close(); 
  14.     System.out.println("over"); 

Python API

下面主要介绍hdfs,参考:https://hdfscli.readthedocs.io/

我们通过命令pip install hdfs安装hdfs库,在使用hdfs前,使用命令hadoop fs -chmod -R 777 / 对当前目录及目录下所有的文件赋予可读可写可执行权限。

  1. >>> from hdfs.client import Client 
  2. >>> #2.X版本port 使用50070  3.x版本port 使用9870 
  3. >>> client = Client('http://192.168.147.128:9870')   
  4. >>> client.list('/')   #查看hdfs /下的目录 
  5. ['hadoop-3.1.4.tar.gz'
  6. >>> client.makedirs('/test'
  7. >>> client.list('/'
  8. ['hadoop-3.1.4.tar.gz''test'
  9. >>> client.delete("/test"
  10. True 
  11. >>> client.download('/hadoop-3.1.4.tar.gz','C:\\Users\\YIUYE\\Desktop'
  12. 'C:\\Users\\YIUYE\\Desktop\\hadoop-3.1.4.tar.gz' 
  13. >>> client.upload('/','C:\\Users\\YIUYE\\Desktop\\demo.txt'
  14. >>> client.list('/'
  15. '/demo.txt' 
  16. >>> client.list('/'
  17. ['demo.txt''hadoop-3.1.4.tar.gz'
  18. >>> # 上传demo.txt 内容:Hello \n hdfs 
  19. >>> with client.read("/demo.txt"as reader: 
  20. ...          print(reader.read()) 
  21. b'Hello \r\nhdfs\r\n' 

相对于Java API,Python API连接实在简单。

 

来源:Python之王内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯