美文网首页
java api 操作hdfs

java api 操作hdfs

作者: 神豪VS勇士赢 | 来源:发表于2020-06-27 22:10 被阅读0次

引入pom 依赖。hadoop-client 版本对应 cdh版本


  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.11</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.hadoop</groupId>
      <artifactId>hadoop-client</artifactId>
      <version>${hadoop.version}</version>
    </dependency>
  </dependencies>

public class HDFSAppTest {
    public  final String HDFS_PATH = "hdfs://localhost:8020";
    FileSystem fileSystem = null;
    Configuration configuration = new Configuration();
    @Before
    public void setUp() throws Exception{
        configuration = new Configuration();
        fileSystem = FileSystem.get(new URI(HDFS_PATH), configuration);
        System.out.println("HDFSAppTest---->setUp");
    }
    @After
    public void tairDown() {
        configuration = null;
        fileSystem = null;
        System.out.println("HDFSAppTest--->tairDown");
    }

    /**
     * 创建HDFS目录
     */
    @Test
    public void mkdir() throws IOException {
        fileSystem.mkdirs(new Path("/hdfsjavaapi/test"));
    }

    /**
     * 创建 HDFS 文件
     * @throws IOException
     */
    @Test
    public void createFile() throws IOException {
        FSDataOutputStream fsDataOutputStream = fileSystem.create(new Path("/hdfsjavaapi/test/file.txt"));
        fsDataOutputStream.write("javaApi Operate".getBytes());
        fsDataOutputStream.flush();
    }

    /**
     * 查看HDFS 文件的内容
     */
    @Test
    public void cat() throws IOException {
        FSDataInputStream inputStream = fileSystem.open(new Path("/hdfsjavaapi/test/file.txt"));
        IOUtils.copyBytes(inputStream, System.out, 1024);
        inputStream.close();
    }

    /**
     * 重命名
     */
    @Test
    public void renameFile() throws IOException {
        Path oldPath = new Path("/hdfsjavaapi/test/file.txt");
        Path newPath = new Path("/hdfsjavaapi/test/filenew.txt");
        fileSystem.rename(oldPath, newPath);
    }
    /**
     * 拷贝 local file to Hadoop
     */
    @Test
    public void copyLocalFileToHDFS() throws IOException {
        Path localPath = new Path("/Users/zhangyinghao/Desktop/zyh.mov");
        Path targetPath = new Path("/hdfsjavaapi/test/test.mov");
        fileSystem.copyFromLocalFile(localPath, targetPath);
    }
    /**
     * 拷贝 local file to Hadoop 带进度条
     */
    @Test
    public void copyLocalFileToHDFSWithProgress() throws IOException {
        InputStream inputStream =new BufferedInputStream(
                new FileInputStream(
                        new File("/需要上传的文件路径")
                )
        );

        FSDataOutputStream fsDataOutputStream = fileSystem.create(new Path("上传到hadoop 的文件路径"), new Progressable() {
            public void progress() {
                System.out.println(".");
            }
        });
        IOUtils.copyBytes(inputStream, fsDataOutputStream,4096);
    }
    /**
     * copy to Local
     */
    @Test
    public void copyToLocal() throws IOException {
        Path localPath = new Path("");
        Path targetPath = new Path("");
        fileSystem.copyToLocalFile(targetPath,localPath);
    }

    /**
     * 展示所有的文件列表 hdfs  查看某个目录下的所有文件
     */
    @Test
    public void listFiles() throws IOException {
        FileStatus[] fileStatuses = fileSystem.listStatus(new Path("/"));
        for (FileStatus fileStatus : fileStatuses) {
            String isDir = fileStatus.isDirectory() ? "文件夹" : "文件";
            //文件包含的副本数
            short replication = fileStatus.getReplication();
            //文件大小
            long len = fileStatus.getLen();
            //文件全路径
            String path = fileStatus.getPath().toString();
            System.out.println(isDir + "\t" + replication + "\t" + len + "\t" + path);

        }
    }

    /**
     * 删除指定路径目录 是否 递归删除
     * @throws Exception
     */
    @Test
    public void delete() throws Exception {
        fileSystem.delete(new Path(""), true);

    }
}

相关文章

  • HDFS支持的访问方式

    √ HDFS Shell命令 √ HDFS Java API √ HDFS REST API √ HDFS ...

  • java api操作HDFS

    如果是使用maven的话,导入如下依赖即可,否则需要在解压好的hadoop文件夹下找到common文件夹和hdfs...

  • java api操作HDFS

    如果是使用maven的话,导入如下依赖即可,否则需要在解压好的hadoop文件夹下找到common文件夹和hdfs...

  • java api 操作hdfs

    引入pom 依赖。hadoop-client 版本对应 cdh版本

  • java api操作HDFS

    如果是使用maven的话,导入如下依赖即可,否则需要在解压好的hadoop文件夹下找到common文件夹和hdfs...

  • java api操作HDFS

    如果是使用maven的话,导入如下依赖即可,否则需要在解压好的hadoop文件夹下找到common文件夹和hdfs...

  • java api操作HDFS

    第一部分 项目创建 一、创建一个maven项目 选中红框所选 部分,点击下一步在下一步之前,确认setting....

  • HDFS的JAVA api操作——学习总结

    目录一、简单JAVA知识二、HDFS的JAVA api操作三、我的学习代码四、我的问题 一、简单JAVA知识 因为...

  • 使用IO流操作HDFS

    除了可以使用系统API进行HDFS操作,还可以通过Java的IO流进行文件的上传和下载。适用于HDFS的自定义操作...

  • HDFS应用开发篇

    HDFS的java操作 hdfs在生产应用中主要是客户端的开发,其核心步骤是从hdfs提供的api中构造一个HDF...

网友评论

      本文标题:java api 操作hdfs

      本文链接:https://www.haomeiwen.com/subject/zravfktx.html