ここで最初の質問...そしてhadoopの学習...
過去 2 週間、Hadoop に関するすべてを理解しようと努めてきましたが、すべての丘の背後には山があるようです。
セットアップは次のとおりです。
- 多数 (100 万個) の小さな (<50MB) XML ファイル (XML にフォーマットされたドキュメント)。
- 各ファイルはレコード/レコードです
- 疑似分散 Hadoop クラスター (1.1.2)
- 古い mapred API を使用する (新しい API が必要なものをサポートする場合、変更される可能性があります)
XmlInputFormat ("Mahout XMLInputFormat") は、XML ドキュメント全体を
私の理解では、XmlInputFormat は、各ファイルが独自のレコードであることを保証します (ファイル/レコードごとに 1 つのタグが存在するため)。
私の問題は次のとおりです。Hadoop を使用してすべてのドキュメントを処理し、情報を検索してから、ファイル/レコードごとに、新しい xml タグが追加された新しい xml ドキュメントを書き直すか、出力したいと考えています。
読むことと学ぶことを恐れない
ここに私のドライバーがあります:
public static void main(String[] args) {
JobConf conf = new JobConf(myDriver.class);
conf.setJobName("bigjob");
// Input/Output Directories
if (args[0].length()==0 || args[1].length()==0) System.exit(-1);
FileInputFormat.setInputPaths(conf, new Path(args[0]));
FileOutputFormat.setOutputPath(conf, new Path(args[1]));
conf.set("xmlinput.start", "<document>");
conf.set("xmlinput.end", "</document>");
// Mapper & Combiner & Reducer
conf.setMapperClass(Mapper.class);
conf.setReducerClass(Reduce.class);
conf.setNumReduceTasks(0);
// Input/Output Types
conf.setInputFormat(XmlInputFormat.class);
conf.setOutputFormat(?????);
conf.setOutputKeyClass(????);
conf.setOutputValueClass(????);
try {
JobClient.runJob(conf);
} catch (Exception e) {
e.printStackTrace();
}
}