HDFS中的Java和Python API接口连接

网友投稿 251 2023-05-29

[[393001]]

上次介绍了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单元测试依赖。

复制<dependencies>    <dependency>          <groupId>org.apache.hadoop</groupId>          <artifactId>hadoop-common</artifactId>          <version>3.1.4</version>    </dependency>    <dependency>          <groupId>org.apache.hadoop</groupId>          <artifactId>hadoop-hdfs</artifactId>          <version>3.1.4</version>    </dependency>    <dependency>        <groupId>org.apache.hadoop</groupId>        <artifactId>hadoop-client</artifactId>        <version>3.1.4</version>    </dependency>    <dependency>        <groupId>junit</groupId>        <artifactId>junit</artifactId>        <version>4.11</version>    </dependency>  </dependencies>  1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.21.22.

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 main {      @Test      public void testPut() throws Exception {          //   获取FileSystem类的方法有很多种,这里只写一种(比较常用的是使URI)          Configuration configuration = new Configuration();          // user是Hadoop集群的账号,连接端口默认9000          FileSystem fileSystem = FileSystem.get(                  new URI("hdfs://192.168.147.128:9000"),                  configuration,                  "hadoop");          // 将f:/stopword.txt 上传到 /user/stopword.txt          fileSystem.copyFromLocalFile(                  new Path("f:/stopword.txt"), new Path("/user/stopword.txt"));          fileSystem.close();      }  1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.21.22.

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

HDFS文件下载

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

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

复制@Test  public void testDownload() throws Exception {      Configuration configuration = new Configuration();      FileSystem fileSystem = FileSystem.get(              new URI("hdfs://192.168.147.128:9000"),              configuration,              "hadoop");      fileSystem.copyToLocalFile(              false             new Path("/user/stopword.txt"),              new Path("stop.txt"),              true);      fileSystem.close();      System.out.println("over");  1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.

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.gztest >>> 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.txthadoop-3.1.4.tar.gz >>> # 上传demo.txt 内容:Hello \n hdfs  >>> with client.read("/demo.txt"as reader:  ...          print(reader.read())  bHello \r\nhdfs\r\n 1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.21.

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

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:您需要了解的有关 API 安全性的信息
下一篇:如何用标准体重计算器API快速开发
相关文章

 发表评论

暂时没有评论,来抢沙发吧~