Hadoop--创建文件系统对象

对于创建文件系统对象有三个基本步骤:

1.获取客户端对象。

2.调用相关函数实现功能。

3.关闭。

第一阶段的代码为:

package Test;

import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.junit.Test;
import org.apache.hadoop.conf.Configuration;

import java.io.IOException;
import java.net.URI;

/**
 * 客户端开发的性质:
 * 1。获取客户端对象
 * 2.调用相关函数实现功能
 * 3.关闭
 */
public class HDFStext {
    /**
     *创建文件系统第一版
     */
    @Test
    public void hdfstest() throws IOException, InterruptedException {
//1. 创建文件系统对象
        URI uri = URI.create("hdfs://Hadoop200:8020");
        Configuration config = new Configuration();
        String user = "yang";
        FileSystem fs = FileSystem.get(uri,config,user);
        System.out.println("fs = " +fs );

        //2.创建目录
        boolean b = fs.mkdirs(new Path("/testhdfs"));
        fs.close();
    }
}

由于这样创建文件系统对象的话,会造成每次编写代码都得重新创建一个对象,造成代码冗余,因此需要进行优化,优化后代码如下:

package Test;

import org.apache.hadoop.fs.FileSystem;
import org.junit.After;
import org.junit.Before;
import org.apache.hadoop.conf.Configuration;

import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;

/**
 * 客户端开发的性质:
 * 1。获取客户端对象
 * 2.调用相关函数实现功能
 * 3.关闭
 */
public class HDFStext {
    /**
     * 优化代码
     */
   private Configuration conf;
   private String user;
   private URI uri;
   private FileSystem fs;

    /**
     *在执行所有Test前之前此函数
     */
    @Before
    public void init() throws URISyntaxException, IOException, InterruptedException {
        user = "yang";
        uri = new URI("hdfs://Hadoop200:8020");
        conf = new Configuration();
        fs = FileSystem.get(uri,conf,user);
    }
    /**
     *在执行所有Test前之前此函数
     */
    @After
     public void end(){
        fs.close();
     }
}
原文地址:https://www.cnblogs.com/yangxionghao/p/13822701.html