JAVA API实现hdfs的文件操作需要三个依赖包hadoop-common、hadoop-hdfs和hadoop-client。

<dependency>
  <groupId>org.apache.hadoop</groupId>
  <artifactId>hadoop-common</artifactId>
  <version>2.6.0</version>
</dependency>

<dependency>
  <groupId>org.apache.hadoop</groupId>
  <artifactId>hadoop-hdfs</artifactId>
  <version>2.6.0</version>
</dependency>

<dependency>
  <groupId>org.apache.hadoop</groupId>
  <artifactId>hadoop-client</artifactId>
  <version>2.6.0</version>
</dependency>

HDFS文件操作步骤如下四步:
1.创建配置文件 Configuration 类
2.获取文件系统 FileSystem类中get()方法获取hdfs文件对象
3.调用API操作 FileSystem中对应方法mkdirs()、copyFromLocalFile()、copyToLocalFile()、delete()
4.关闭资源

package com.hadoop;

import static org.junit.Assert.assertTrue;
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 AppTest {
    //新建hdfs文件夹
    @Test
    public void testMkdirs() throws Exception{
        //1.创建配置文件
        Configuration conf = new Configuration();
        //2.获取文件系统,HDFS文件系统  格式 hdfs://虚拟机:9000
        FileSystem fs = FileSystem.get(new URI("hdfs://192.168.197.106:9000"), conf,"root");
        //3.调用API操作
        fs.mkdirs(new Path("/user/java"));
        //4.关闭资源
        fs.close();
    }

    //上传一个文件
    @Test
    public void testCopyFromLocalFile() throws Exception{
        //1.创建配置文件
        Configuration conf = new Configuration();
        //2.获取系统文件
        FileSystem fs = FileSystem.get(new URI("hdfs://192.168.197.106:9000"), conf,"root");
        //3.API操作
        fs.copyFromLocalFile(new Path("D:\\BaiduNetdiskDownload\\20200106\\Hadoop\\projects\\hdfsRW\\data\\test.txt"),new Path("/user/java"));
        //4.关闭资源
        fs.close();
    }

    //下载文件
   @Test
    public void copyToLocalFile() throws Exception{
       //1.创建配置文件
       Configuration conf = new Configuration();
       //2.获取系统文件
       FileSystem fs = FileSystem.get(new URI("hdfs://192.168.197.106:9000"), conf,"root");
       //3.API操作
       fs.copyToLocalFile(new Path("/hdfs/shell/test.txt"),new Path("D:\\BaiduNetdiskDownload\\20200106\\Hadoop\\projects\\hdfsRW\\data\\test2.txt"));
       //4.关闭资源
       fs.close();
   }

   //删除文件/文件夹
    @Test
    public void testDelete() throws Exception{
        //1.创建配置文件
        Configuration conf = new Configuration();
        //2.获取系统文件
        FileSystem fs = FileSystem.get(new URI("hdfs://192.168.197.106:9000"), conf,"root");
        //3.API操作
        //b:代表是否递归,true会删除指定文件夹及内容,false删除指定文件
        fs.delete(new Path("/user/java/test.txt"),false);
        //4.关闭资源
        fs.close();
    }
    }
Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐