Java 在hadoop中使用mapreduce解析文件

Java 在hadoop中使用mapreduce解析文件,java,parsing,hadoop,mapreduce,Java,Parsing,Hadoop,Mapreduce,我有一个日志文件名为2014-11-10.log,结构如下 头1,体1_a 头2,体2 头3,体3 头1,体1_b ... 标题相同的主体可能不相等,例如,主体1_a和主体1_b不相等 我想将每个主体解析为csv文件,其中每个csv文件对应一个头部 比如说,, 校长1,年龄:5,收入:1000,性别:男孩 标题2,电子邮件,something@gmail.com,年龄,20岁,性别,男孩 标题2,电子邮件,something@yahoo.com,年龄,20岁 第一类,年龄:5岁,收入:10

我有一个日志文件名为2014-11-10.log,结构如下

头1,体1_a
头2,体2
头3,体3
头1,体1_b
...
标题相同的主体可能不相等,例如,主体1_a和主体1_b不相等

我想将每个主体解析为csv文件,其中每个csv文件对应一个头部

比如说,,

校长1,年龄:5,收入:1000,性别:男孩
标题2,电子邮件,something@gmail.com,年龄,20岁,性别,男孩
标题2,电子邮件,something@yahoo.com,年龄,20岁
第一类,年龄:5岁,收入:1000
所有标题为1的行都可以解析为csv文件:

年龄、金钱、性别
5,1000,小子
51000,零

假设每个日志中有3个头,那么我将把它们解析为3个csv文件

我试图编写一个mapreduce程序来解析这样一个大数据集

我的mapreduce程序将一个日志文件传送到映射器,解析逻辑在映射器中完成,并使用映射器写入csv文件。在我的程序中,不需要减速器

例如,当遇到已处理行的head1时,映射程序在解析其主体后写入head1.csv。键是head,值是解析后的body(例如,“51000,boy”是值)

但是,这个程序比我预期的要慢(一个小时大约有一万个日志,每个日志不超过1MB)。即使我使用了一个空映射器(我删除了解析逻辑,只将常量字符串写入csv文件),它仍然运行了大约一个小时

为什么这样的程序设计太慢,我该如何改进呢


非常感谢

你能分享
Mapper
代码吗?