【发布时间】:2013-03-17 20:28:06
【问题描述】:
您好,我在 VMware 上以伪分布式模式安装了 hadoop-0.20.2-cdh3u5。我想使用这个已建立的环境解析 XML 文件。我可以通过编写 map/reduce 代码然后将它们作为 .jar 文件导出到集群上然后在集群上执行它们来做到这一点。我无法弄清楚的是如何将 java 解析代码(使用 SAXON 解析器)放入 map/reduce 类中,然后在输出中生成 csv 文件。
所以我有这个解析代码:(在这里使用 SAXon 解析器)
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Unmarshaller;
public class JAXBC {
private JAXBContext context;
private Unmarshaller um;
public JAXBC() throws JAXBException
{
// creating JAXB context and instantiating Marshaller
JAXBContext context = JAXBContext.newInstance(ConnectHome.class);
// get variables from the xml file
um = context.createUnmarshaller();
}
public ConnectHome convertJAXB(String strFilePath) throws FileNotFoundException,
JAXBException
{
return ((ConnectHome) um.unmarshal(new FileReader(strFilePath)));
}
}
我有类似这样的 XML:(此处的示例元素)
<Course>
<ID>1001</ID>
<Seats>10</Seats>
<Description>Department: CS , Faculty: XYZ</Description>
<Faculty>
<Name>XYZ</Name>
<Age>30</Age>
</Faculty>
</Course>
现在我的问题是我无法弄清楚如何以 map/reduce 格式编写这段特定的代码。我已经参考了这个特定的教程a hadoop 和 yahoo 上的各种教程。
所以我的问题是有人可以告诉我如何编写这样的 map reduce 代码,然后从中创建一个 jar 文件。
如果需要其他信息,请告诉我。我尽量短。
提前致谢。
注意:我知道这在 mapreduce 世界中听起来像是一个非常微不足道的问题,而我在这里展示的这个 XML 只是其中包含少量标签的单个标签的一个示例。
【问题讨论】:
-
在 stack-overflow 上也有类似的帖子,但没有一个得到正确回答。我也知道 Hadoop 中有一个叫做 XMLInputFormat 的东西。但我的问题是我无法将所有这些信息组合成一个运行的 map reduce 格式代码。
标签: java hadoop xml-parsing mapreduce