HDFS使用自定义配置文件重构代码

1、配置涉及的路径:WordCount.properties

在main中创建目录resources。这是Maven工程标准的。

右击resources,选择Mark Directory as,选择Resources Root

右击resources,创建一个file:WordCount.properties

INPUT_PATH=/hdfsApi/test/hello.txt
OUTPUT_PATH=/hdfsApi/output/
OUTPUT_FILE=WCOut2
HDFS_URI=hdfs://192.168.126.101:8020

 

2、配置参数工具类:ParamsUtils.java

作用:读取属性配置文件。为Java固定写法。

package com.imooc.bigdata.hadoop.hdfs;

/*
 * 读取属性配置文件
 */

import java.io.IOException;
import java.util.Properties;

public class ParamsUtils {

    private static Properties properties = new Properties();
    static {
        try {
            properties.load(ParamsUtils.class.getClassLoader().getResourceAsStream("WordCount.properties"));
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    public static Properties getProperties() throws Exception {
        return properties;
    }

    public static void main(String[] args) throws Exception {
        System.out.println(getProperties().getProperty("INPUT_PATH"));
    }
}

 

3、定义常量:Constants.java

package com.imooc.bigdata.hadoop.hdfs;

/*
 * 常量
 */

public class Constants {

    public static  final String INPUT_PATH = "INPUT_PATH";

    public static  final String OUTPUT_PATH = "OUTPUT_PATH";

    public static  final String OUTPUT_FILE = "OUTPUT_FILE";

    public static  final String HDFS_URI = "HDFS_URI";

}

 

4、代码备份存储为:HDFSWordCountApp02.java为

HDFSWordCountApp02.java为原本01的副本

在HDFSWordCountApp01.java上进行修改

由原本的代码:

        // 1) 读取HDFS上的文件 ==》 HDFS API
        // 此处为输入路径
        Path input = new Path("/hdfsApi/test/hello.txt");
        // 获取要操作的HDFS文件系统
        // 此处为HDFS的URL
        FileSystem fs = FileSystem.get(new URI("hdfs://192.168.126.101:8020"), new Configuration(), "hadoop");
        // 4) 将结果输出到HDFS ==》 HDFS API
        // 此处为输出路径
        Path output = new Path("/hdfsApi/output/");
        // 此处为输出文件名
        FSDataOutputStream out = fs.create(new Path(output, new Path("WCOut")));

依次改为:

        // 1) 读取HDFS上的文件 ==》 HDFS API
        // 此处为输入路径
        Properties properties = ParamsUtils.getProperties();
        Path input = new Path(properties.getProperty(Constants.INPUT_PATH));
        // 获取要操作的HDFS文件系统
        // 此处为HDFS的URL
        FileSystem fs = FileSystem.get(new URI(properties.getProperty(Constants.HDFS_URI)), new Configuration(), "hadoop");
        // 4) 将结果输出到HDFS ==》 HDFS API
        // 此处为输出路径
        Path output = new Path(properties.getProperty(Constants.OUTPUT_PATH));
        // 此处为输出文件名
        FSDataOutputStream out = fs.create(new Path(output, new Path(properties.getProperty(Constants.OUTPUT_FILE))));

posted @ 2021-07-06 16:17  酱汁怪兽  阅读(110)  评论(0)    收藏  举报