HDFS中的Java和Python API接口连接

大数据 2023-07-05 17:29:38
54阅读

之前详细介绍了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. <dependencies> 
  2.   <dependency> 
  3.         <groupId>org.apache.hadoop</groupId> 
  4.         <artifactId>hadoop-common</artifactId> 
  5.         <version>3.1.4</version> 
  6.   </dependency> 
  7.   <dependency> 
  8.         <groupId>org.apache.hadoop</groupId> 
  9.         <artifactId>hadoop-hdfs</artifactId> 
  10.         <version>3.1.4</version> 
  11.   </dependency> 
  12.   <dependency> 
  13.       <groupId>org.apache.hadoop</groupId> 
  14.       <artifactId>hadoop-client</artifactId> 
  15.       <version>3.1.4</version> 
  16.   </dependency> 
  17.   <dependency> 
  18.       <groupId>junit</groupId> 
  19.       <artifactId>junit</artifactId> 
  20.       <version>4.11</version> 
  21.   </dependency> 
  22. </dependencies> 

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联接确实简易。

the end
免责声明:本文不代表本站的观点和立场,如有侵权请联系本站删除!本站仅提供信息存储空间服务。