public class Configuration extends java.lang.Object implements java.lang.Iterable<java.util.Map.Entry<java.lang.String,java.lang.String>>, Writable, java.io.Serializable
Configurations are specified by resources. A resource contains a set of
name/value pairs as XML data. Each resource is named by either a
String. If named by a String,
then the classpath is examined for a file with that name. If named by a
Path, then the local filesystem is examined directly, without
referring to the classpath.
Unless explicitly turned off, Hadoop by default specifies two resources, loaded in-order from the classpath:
Configuration parameters may be declared final.
Once a resource declares a value final, no subsequently-loaded
resource can alter that value.
For example, one might define a final parameter with:
<property>
<name>dfs.client.buffer.dir</name>
<value>/tmp/hadoop/dfs/client</value>
<final>true</final>
</property>
Administrators typically define parameters as final in
core-site.xml for values that user applications may not alter.
Value strings are first processed for variable expansion. The available properties are:
System.getProperties().For example, if a configuration resource contains the following property
definitions:
<property>
<name>basedir</name>
<value>/user/${user.name}</value>
</property>
<property>
<name>tempdir</name>
<value>${basedir}/tmp</value>
</property>
When conf.get("tempdir") is called, then ${basedir}
will be resolved to another property in this Configuration, while
${user.name} would then ordinarily be resolved to the value
of the System property with that name.
| Modifier and Type | Class and Description |
|---|---|
static class |
Configuration.IntegerRanges
A class that represents a set of positive integer ranges.
|
| Constructor and Description |
|---|
Configuration()
A new configuration.
|
Configuration(boolean loadDefaults)
A new configuration where the behavior of reading from the default
resources can be turned off.
|
Configuration(Configuration other)
A new configuration with the same settings cloned from another.
|
| Modifier and Type | Method and Description |
|---|---|
static void |
addDefaultResource(java.lang.String name)
Add a default resource.
|
void |
addResource(java.io.InputStream in)
Add a configuration resource.
|
void |
addResource(java.lang.String name)
Add a configuration resource.
|
void |
addResource(java.net.URL url)
Add a configuration resource.
|
void |
clear()
Clears all keys from the configuration.
|
static void |
dumpConfiguration(Configuration conf,
java.io.Writer out)
Writes out all the parameters and their properties (final and resource) to
the given
Writer
The format of the output would be
{ "properties" : [ {key1,value1,key1.isFinal,key1.resource}, {key2,value2,
key2.isFinal,key2.resource}... |
java.lang.String |
get(java.lang.String name)
Get the value of the
name property, null if
no such property exists. |
java.lang.String |
get(java.lang.String name,
java.lang.String defaultValue)
Get the value of the
name property. |
boolean |
getBoolean(java.lang.String name,
boolean defaultValue)
Get the value of the
name property as a boolean. |
java.lang.Class<?> |
getClass(java.lang.String name,
java.lang.Class<?> defaultValue)
Get the value of the
name property as a Class. |
<U> java.lang.Class<? extends U> |
getClass(java.lang.String name,
java.lang.Class<? extends U> defaultValue,
java.lang.Class<U> xface)
Get the value of the
name property as a Class
implementing the interface specified by xface. |
java.lang.Class<?> |
getClassByName(java.lang.String name)
Load a class by name.
|
java.lang.Class<?>[] |
getClasses(java.lang.String name,
java.lang.Class<?>... defaultValue)
Get the value of the
name property
as an array of Class. |
java.lang.ClassLoader |
getClassLoader()
Get the
ClassLoader for this job. |
java.io.InputStream |
getConfResourceAsInputStream(java.lang.String name)
Get an input stream attached to the configuration resource with the
given
name. |
java.io.Reader |
getConfResourceAsReader(java.lang.String name)
Get a
Reader attached to the configuration resource with the
given name. |
java.io.File |
getFile(java.lang.String dirsProp,
java.lang.String path)
Get a local file name under a directory named in dirsProp with
the given path.
|
float |
getFloat(java.lang.String name,
float defaultValue)
Get the value of the
name property as a float. |
<U> java.util.List<U> |
getInstances(java.lang.String name,
java.lang.Class<U> xface)
Get the value of the
name property as a List
of objects implementing the interface specified by xface. |
int |
getInt(java.lang.String name,
int defaultValue)
Get the value of the
name property as an int. |
long |
getLong(java.lang.String name,
long defaultValue)
Get the value of the
name property as a long. |
java.util.regex.Pattern |
getPattern(java.lang.String name,
java.util.regex.Pattern defaultValue)
Get the value of the
name property as a |
Configuration.IntegerRanges |
getRange(java.lang.String name,
java.lang.String defaultValue)
Parse the given attribute as a set of integer ranges
|
java.lang.String |
getRaw(java.lang.String name)
Get the value of the
name property, without doing
variable expansion. |
java.net.URL |
getResource(java.lang.String name)
Get the
URL for the named resource. |
java.util.Collection<java.lang.String> |
getStringCollection(java.lang.String name)
Get the comma delimited values of the
name property as
a collection of Strings. |
java.lang.String[] |
getStrings(java.lang.String name)
Get the comma delimited values of the
name property as
an array of Strings. |
java.lang.String[] |
getStrings(java.lang.String name,
java.lang.String... defaultValue)
Get the comma delimited values of the
name property as
an array of Strings. |
java.util.Collection<java.lang.String> |
getTrimmedStringCollection(java.lang.String name)
Get the comma delimited values of the
name property as
a collection of Strings, trimmed of the leading and trailing whitespace. |
java.lang.String[] |
getTrimmedStrings(java.lang.String name)
Get the comma delimited values of the
name property as
an array of Strings, trimmed of the leading and trailing whitespace. |
java.lang.String[] |
getTrimmedStrings(java.lang.String name,
java.lang.String... defaultValue)
Get the comma delimited values of the
name property as
an array of Strings, trimmed of the leading and trailing whitespace. |
java.util.Iterator<java.util.Map.Entry<java.lang.String,java.lang.String>> |
iterator()
Get an
Iterator to go through the list of String
key-value pairs in the configuration. |
static void |
main(java.lang.String[] args)
For debugging.
|
void |
readFields(java.io.DataInput in)
Deserialize the fields of this object from
in. |
void |
reloadConfiguration()
Reload configuration from previously added resources.
|
void |
set(java.lang.String name,
java.lang.String value)
Set the
value of the name property. |
void |
setBoolean(java.lang.String name,
boolean value)
Set the value of the
name property to a boolean. |
void |
setBooleanIfUnset(java.lang.String name,
boolean value)
Set the given property, if it is currently unset.
|
void |
setClass(java.lang.String name,
java.lang.Class<?> theClass,
java.lang.Class<?> xface)
Set the value of the
name property to the name of a
theClass implementing the given interface xface. |
void |
setClassLoader(java.lang.ClassLoader classLoader)
Set the class loader that will be used to load the various objects.
|
void |
setFloat(java.lang.String name,
float value)
Set the value of the
name property to a float. |
void |
setIfUnset(java.lang.String name,
java.lang.String value)
Sets a property if it is currently unset.
|
void |
setInt(java.lang.String name,
int value)
Set the value of the
name property to an int. |
void |
setLong(java.lang.String name,
long value)
Set the value of the
name property to a long. |
void |
setPattern(java.lang.String name,
java.util.regex.Pattern pattern)
Set the given property to
Pattern. |
void |
setQuietMode(boolean quietmode)
Set the quietness-mode.
|
void |
setStrings(java.lang.String name,
java.lang.String... values)
Set the array of string values for the
name property as
as comma delimited values. |
int |
size()
Return the number of keys in the configuration.
|
double |
toDouble()
Convert Writable to double.
|
float |
toFloat()
Convert Writable to float.
|
int |
toInt()
Convert Writable to int.
|
long |
toLong()
Convert Writable to long.
|
java.lang.String |
toString() |
void |
write(java.io.DataOutput out)
Serialize the fields of this object to
out. |
void |
writeXml(java.io.OutputStream out)
Write out the non-default properties in this configuration to the give
OutputStream. |
public Configuration()
public Configuration(boolean loadDefaults)
loadDefaults is false, the new instance
will not load resources from the default files.loadDefaults - specifies whether to load from the default filespublic Configuration(Configuration other)
other - the configuration from which to clone settings.public static void addDefaultResource(java.lang.String name)
name - file name. File should be present in the classpath.public void addResource(java.lang.String name)
name - resource to be added, the classpath is examined for a file
with that name.public void addResource(java.net.URL url)
url - url of the resource to be added, the local filesystem is
examined directly to find the resource, without referring to
the classpath.public void addResource(java.io.InputStream in)
in - InputStream to deserialize the object from.public void reloadConfiguration()
public java.lang.String get(java.lang.String name)
name property, null if
no such property exists.
Values are processed for variable expansion
before being returned.name - the property name.name property,
or null if no such property exists.public java.lang.String getRaw(java.lang.String name)
name property, without doing
variable expansion.name - the property name.name property,
or null if no such property exists.public void set(java.lang.String name,
java.lang.String value)
value of the name property.name - property name.value - property value.public void setIfUnset(java.lang.String name,
java.lang.String value)
name - the property namevalue - the new valuepublic java.lang.String get(java.lang.String name,
java.lang.String defaultValue)
name property. If no such property
exists, then defaultValue is returned.name - property name.defaultValue - default value.defaultValue if the property
doesn't exist.public int getInt(java.lang.String name,
int defaultValue)
name property as an int.
If no such property exists, or if the specified value is not a valid
int, then defaultValue is returned.name - property name.defaultValue - default value.int,
or defaultValue.public void setInt(java.lang.String name,
int value)
name property to an int.name - property name.value - int value of the property.public long getLong(java.lang.String name,
long defaultValue)
name property as a long.
If no such property is specified, or if the specified value is not a valid
long, then defaultValue is returned.name - property name.defaultValue - default value.long,
or defaultValue.public void setLong(java.lang.String name,
long value)
name property to a long.name - property name.value - long value of the property.public float getFloat(java.lang.String name,
float defaultValue)
name property as a float.
If no such property is specified, or if the specified value is not a valid
float, then defaultValue is returned.name - property name.defaultValue - default value.float,
or defaultValue.public void setFloat(java.lang.String name,
float value)
name property to a float.name - property name.value - property value.public boolean getBoolean(java.lang.String name,
boolean defaultValue)
name property as a boolean.
If no such property is specified, or if the specified value is not a valid
boolean, then defaultValue is returned.name - property name.defaultValue - default value.boolean,
or defaultValue.public void setBoolean(java.lang.String name,
boolean value)
name property to a boolean.name - property name.value - boolean value of the property.public void setBooleanIfUnset(java.lang.String name,
boolean value)
name - property namevalue - new valuepublic java.util.regex.Pattern getPattern(java.lang.String name,
java.util.regex.Pattern defaultValue)
name property as a Pattern, then DefaultValue is returned.name - property namedefaultValue - default valuepublic void setPattern(java.lang.String name,
java.util.regex.Pattern pattern)
Pattern.
If the pattern is passed as null, sets the empty pattern which results in
further calls to getPattern(...) returning the default value.name - property namepattern - new valuepublic void write(java.io.DataOutput out)
throws java.io.IOException
Writableout.public void readFields(java.io.DataInput in)
throws java.io.IOException
Writablein.
For efficiency, implementations should attempt to re-use storage in the existing object where possible.
readFields in interface Writablein - DataInput to deseriablize this object from.java.io.IOExceptionpublic Configuration.IntegerRanges getRange(java.lang.String name, java.lang.String defaultValue)
name - the attribute namedefaultValue - the default value if it is not setpublic java.util.Collection<java.lang.String> getStringCollection(java.lang.String name)
name property as
a collection of Strings.
If no such property is specified then empty collection is returned.
This is an optimized version of getStrings(String)
name - property name.Strings.public java.lang.String[] getStrings(java.lang.String name)
name property as
an array of Strings.
If no such property is specified then null is returned.name - property name.Strings,
or null.public java.lang.String[] getStrings(java.lang.String name,
java.lang.String... defaultValue)
name property as
an array of Strings.
If no such property is specified then default value is returned.name - property name.defaultValue - The default valueStrings,
or default value.public java.util.Collection<java.lang.String> getTrimmedStringCollection(java.lang.String name)
name property as
a collection of Strings, trimmed of the leading and trailing whitespace.
If no such property is specified then empty Collection is returned.name - property name.Strings, or empty Collectionpublic java.lang.String[] getTrimmedStrings(java.lang.String name)
name property as
an array of Strings, trimmed of the leading and trailing whitespace.
If no such property is specified then an empty array is returned.name - property name.Strings,
or empty array.public java.lang.String[] getTrimmedStrings(java.lang.String name,
java.lang.String... defaultValue)
name property as
an array of Strings, trimmed of the leading and trailing whitespace.
If no such property is specified then default value is returned.name - property name.defaultValue - The default valueStrings,
or default value.public void setStrings(java.lang.String name,
java.lang.String... values)
name property as
as comma delimited values.name - property name.values - The valuespublic java.lang.Class<?> getClassByName(java.lang.String name)
throws java.lang.ClassNotFoundException
name - the class name.java.lang.ClassNotFoundException - if the class is not found.public java.lang.Class<?>[] getClasses(java.lang.String name,
java.lang.Class<?>... defaultValue)
name property
as an array of Class.
The value of the property specifies a list of comma separated class names.
If no such property is specified, then defaultValue is
returned.name - the property name.defaultValue - default value.Class[],
or defaultValue.public java.lang.Class<?> getClass(java.lang.String name,
java.lang.Class<?> defaultValue)
name property as a Class.
If no such property is specified, then defaultValue is
returned.name - the class name.defaultValue - default value.Class,
or defaultValue.public <U> java.lang.Class<? extends U> getClass(java.lang.String name,
java.lang.Class<? extends U> defaultValue,
java.lang.Class<U> xface)
name property as a Class
implementing the interface specified by xface.
If no such property is specified, then defaultValue is
returned.
An exception is thrown if the returned class does not implement the named
interface.name - the class name.defaultValue - default value.xface - the interface implemented by the named class.Class,
or defaultValue.public <U> java.util.List<U> getInstances(java.lang.String name,
java.lang.Class<U> xface)
name property as a List
of objects implementing the interface specified by xface.
An exception is thrown if any of the classes does not exist, or if it does
not implement the named interface.name - the property name.xface - the interface implemented by the classes named by
name.List of objects implementing xface.public void setClass(java.lang.String name,
java.lang.Class<?> theClass,
java.lang.Class<?> xface)
name property to the name of a
theClass implementing the given interface xface.
An exception is thrown if theClass does not implement the
interface xface.name - property name.theClass - property value.xface - the interface implemented by the named class.public java.io.File getFile(java.lang.String dirsProp,
java.lang.String path)
throws java.io.IOException
dirsProp - directory in which to locate the file.path - file-path.java.io.IOExceptionpublic java.net.URL getResource(java.lang.String name)
URL for the named resource.name - resource name.public java.io.InputStream getConfResourceAsInputStream(java.lang.String name)
name.name - configuration resource name.public java.io.Reader getConfResourceAsReader(java.lang.String name)
Reader attached to the configuration resource with the
given name.name - configuration resource name.public int size()
public void clear()
public java.util.Iterator<java.util.Map.Entry<java.lang.String,java.lang.String>> iterator()
Iterator to go through the list of String
key-value pairs in the configuration.iterator in interface java.lang.Iterable<java.util.Map.Entry<java.lang.String,java.lang.String>>public void writeXml(java.io.OutputStream out)
throws java.io.IOException
OutputStream.out - the output stream to write to.java.io.IOExceptionpublic static void dumpConfiguration(Configuration conf, java.io.Writer out) throws java.io.IOException
Writer
The format of the output would be
{ "properties" : [ {key1,value1,key1.isFinal,key1.resource}, {key2,value2,
key2.isFinal,key2.resource}... ] }
It does not output the parameters of the configuration object which is
loaded from an input stream.out - the Writer to write tojava.io.IOExceptionpublic java.lang.ClassLoader getClassLoader()
ClassLoader for this job.public void setClassLoader(java.lang.ClassLoader classLoader)
classLoader - the new class loader.public java.lang.String toString()
toString in class java.lang.Objectpublic void setQuietMode(boolean quietmode)
quietmode - true to set quiet-mode on, false
to turn it off.public static void main(java.lang.String[] args)
throws java.lang.Exception
java.lang.Exceptionpublic double toDouble()
Writablepublic float toFloat()
Writablepublic int toInt()
Writable