【问题标题】:Hadoop (1.1.2) XML processing & re-writing fileHadoop (1.1.2) XML 处理和重写文件
【发布时间】:2013-07-24 16:45:57
【问题描述】:

这里的第一个问题...和学习hadoop...

过去两周我一直在尝试了解有关 hadoop 的一切,但似乎每座山背后都有一座山。

设置如下:

  1. 大量(100 万)个小 (
  2. 每个文件都是一个记录/记录
  3. 伪分布式 Hadoop 集群 (1.1.2)
  4. 使用旧的 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();
    }
}

【问题讨论】:

    标签: java xml apache hadoop mapreduce


    【解决方案1】:

    我想说一个简单的解决方案是使用TextOutputFormat,然后使用Text 作为输出键和NullWritable 作为输出值。

    TextOutputFormat 使用分隔符来分隔您从作业中输出的键值对。对于您的要求,您不需要这种安排,但您只想输出一个 XML 正文。如果您将 null 或 NullWritable 作为输出键或值传递,TextOutputFormat 将不会写入 null 或分隔符,只会写入非 null 键或值。

    使用 XmlINputFormat 的另一种方法是使用 WholeFileInput(详见 Tom White 的 Hadoop - The权威指南)。

    无论哪种方式,您都需要编写映射器来使用输入值 Text 对象(可能使用 XML SAX 或 DOM 解析器),然后将转换后的 XML 输出为 Text 对象。

    【讨论】:

      猜你喜欢
      • 2012-10-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-30
      • 2015-04-22
      • 2017-05-04
      相关资源
      最近更新 更多