Configuration类的使用(扩充中)

        Hadoop中的组件是通过Hadoop自己的配置API来配置的。一个Configuration类的实例代表配置属性及其取值的一个集合。Configuration类可以在org.apache.hadoop.conf包中找到。

        每个属性由一个String来命名,而值的类型可以是多种类型之一,包括Java基本类型(如boolean、int、long和float)、其他有用的类型(如String、Class和java.io.File)及String的集合。Configuration从资源(即使用简单结构定义的名值对的XML文件)中读取其属性值。

 一个简单的配置文件configuration-1.xml如下:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
	<property>
		<name>color</name>
		<value>yellow</value>
		<description>Color</description>
	</property>
	<property>
		<name>size</name>
		<value>10</value>
		<description>Size</description>
	</property>
	<property>
		<name>weight</name>
		<value>heavy</value>
		<final>true</final>
		<description>Weight</description>
	</property>
	<property>
		<name>size-weight</name>
		<value>${size},${weight}</value>
		<description>Size and Weight</description>
	</property>
</configuration>

 configuration-2.xml:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
	<property>
		<name>color</name>
		<value>black</value>
		<description>Color</description>
	</property>
	<property>
		<name>size</name>
		<value>20</value>
		<description>Size</description>
	</property>
	<property>
		<name>weight</name>
		<value>light</value>
		<final>true</final>
		<description>Weight</description>
	</property>
	<property>
		<name>size-weight</name>
		<value>${size},${weight}</value>
		<description>Size and Weight</description>
	</property>
</configuration>

下面的代码使用Configuration的一个实例加载这两个xml文件(按照顺序加载)。

/**
		 * addResource方法传入的参数可以是Path对象,引入具体的xml文件路径即可
		 */
		//config.addResource(new Path("/Users/mymac/Desktop/configuration-1.xml"));
		/**
		 * configuration的addResource(String str)方法,传入的xml文件名称,应放在项目src目录下
		 */
		config.addResource("configuration-1.xml");
		System.out.println(config.get("color"));
		System.out.println(config.get("weight"));
		System.out.println(config.get("size"));
//		config.set("size", "14");
//		config.set("weigth", "light");
//		config.set("weight-size", "light-40");
//		System.out.println(config.get("weight-size"));
		/**
		 * xml文件按顺序加载,后加载的文件会覆盖之前文件对应属性值
		 * 除非xml文件当中<property></property>标签内
		 * 有<final></final>标签,标识了属性值不可改变
		 */
		config.addResource("configuration-2.xml");
		System.out.println(config.get("color"));
		System.out.println(config.get("weight"));
		System.out.println(config.get("size"));

以上代码在控制台显示的内容如下:

 从输出结果可以看出,xml文件按顺序加载,后加载的文件会覆盖之前文件对应属性值除非xml文件当中<property</property>标签内有<final>true</final>标签,标识了属性值不可改变。