这里的第一个问题......和学习hadoop......
在过去的两周里,我一直在试图了解有关 hadoop 的一切,但似乎每座山背后都有一座山。
这是设置:
- 大量 (100 万) 个小 (<50MB) XML 文件(格式化为 XML 的文档)。
- 每个文件是一个记录/记录
- 伪分布式Hadoop集群(1.1.2)
- 使用旧的 mapred API(如果新的 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();
}
}