Javaアプリケーションでは、実行時にhadoop xmlsのフォルダを定義する必要があります(簡単にするために、プログラムのコマンドライン引数を使用してください)。hadoop * -site.xmlのディレクトリをプログラムで設定する方法
import org.apache.hadoop.conf.Configuration()
....
Configuration = new Configuration
config.addResource(new Path(String.format("%s/core-site.xml", hadoopLocation)));
config.addResource(new Path(String.format("%s/hdfs-site.xml", hadoopLocation)));
config.addResource(new Path(String.format("%s/tez-site.xml", hadoopLocation)));
config.addResource(new Path(String.format("%s/yarn-site.xml", hadoopLocation)));
config.addResource(new Path(String.format("%s/mapred-site.xml", hadoopLocation)));
config.set("fs.hdfs.impl", org.apache.hadoop.hdfs.DistributedFileSystem.class.getName());
config.set("fs.file.impl", org.apache.hadoop.fs.LocalFileSystem.class.getName());
try {
FileSystem dfs = FileSystem.get(config);
} catch (IOException e) {
LOGGER.error("Failed to process hadoop file system");
}
しかし、私は私のプログラムでは、各呼び出しnew Configuration()
でそれを繰り返すか、いくつかの永続的な事前に設定baseConfiguration
オブジェクトを使用してnew Configuration(baseConfiguration)
のようにそれを使用する必要があります。私は、私は次のコードのようなものを使用することができ、推測します。これらの方法のすべてはかなり不器用に見えます。より洗練されたソリューションがありますか?たぶん静的メソッド呼び出しのような何か私は一度行うことができます。次のコードは、説明のためにのみ表示されています。