第一個問題......和學習的Hadoop ...的Hadoop(1.1.2)XML處理和重寫文件在這裏
我已經花了過去兩週試圖瞭解關於Hadoop的一切,但似乎每座山都有一座山。
這裏的設置:小(< 50MB)XML文件(格式爲XML文檔)
- 地段(1元)。
- 每個文件是記錄/記錄使用舊的API mapred
- 僞分佈式Hadoop集羣(1.1.2)
- (可以改變,如果新的API支持什麼需要)
我發現XmlInputFormat(「Mahout XMLInputFormat」)作爲讀取文件的一個很好的起點,因爲我可以指定整個XML文檔爲
我的理解是XmlInputFormat將負責確保每個文件都是自己的記錄(因爲1個標記存在每個文件/記錄)。
我的問題是這樣的:我想利用Hadoop的每個文檔處理,搜索信息,然後添加爲每個文件/記錄,重新編寫或輸出新的XML標記一個新的XML文檔。
不怕讀書學習,但骨架一起玩真的會幫我「玩」,瞭解Hadoop的
這裏是我的司機:
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();
}
}