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))));



浙公网安备 33010602011771号