gpt4 book ai didi

java - 带有 header 的 Hadoop MapReduce 输出

转载 作者:行者123 更新时间:2023-12-02 22:02:41 25 4
gpt4 key购买 nike

如何在我的 map/reduce 作业上仅输出一次标题以用作配置单元导入的 csv,而不是手动输入列名。

公共(public)类 MyMapper 扩展 Mapper {

    public void map(LongWritable key, Text value, Context context) throws IOException, InterruptedException {
try {
InputStream is = new ByteArrayInputStream(value.toString().getBytes());
DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
Document doc = dBuilder.parse(is);
//....

doc.getDocumentElement().normalize();

// .......
//context.write(new Text("el_from \t Title \t External Link"), NullWritable.get());
// ....
String title = eElement.getElementsByTagName("title").item(0).getTextContent();
text = eElement.getElementsByTagName("text").item(0).getTextContent();
String id = eElement.getElementsByTagName("id").item(0).getTextContent();
for(int j = 0; j < externalLinks.length; j++)
{
Pattern prl = Pattern.compile("(http:\\/\\/www\\.|https:\\/\\/www\\.|http:\\/\\/|https:\\/\\/)?[a-z0-9]+([\\-\\.]{1}[a-z0-9]+)*\\.[a-z]{2,5}(:[0-9]{1,5})?");
Matcher ml = prl.matcher(externalLinks[j]);
if(ml.find()) {
MatchResult mlr = ml.toMatchResult();
context.write(new Text(id+","+title + ","+ mlr.group(0)), NullWritable.get());
}
}
}
}
} catch (Exception e) {
// LogWriter.getInstance().WriteLog(e.getMessage());
}
}
}`enter code here`

我得到的结果是这样的

3、农业、 http://www.treccani.it

3、农业、 http://www.wwf.it/client/render.aspx

我想要的结果如下所示,带有标题

id、标题、链接

3、农业、 http://www.treccani.it

3、农业、 http://www.wwf.it/client/render.aspx

最佳答案

您应该在文本文件上构建一个 Hive 表,这将定义 Hive 架构中的“标题”,而不是 Hive 表中的另一个随机行。更重要的是,Map Reduce 不能保证你的标题是文件的第一行。

CREATE EXTERNAL TABLE x ( 
id INT, title STRING, link STRING
)
ROW FORMAT DELIMITED FIELDS TERMINATED BY ','
STORED AS TEXTFILE
LOCATION 'hdfs://mapred/outputDir';

从那里,如果需要,您可以编写 Hive 查询以输出到单独的 CSV 文件

此外,我相信,Spark 可以读取 XML、解析它并写出带有标题的 CSV,这可能更适合您的用例

关于java - 带有 header 的 Hadoop MapReduce 输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51143195/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com