hadoop中MR作业后数据如何映射到输出文件中?

时间:2015-10-05 06:54:27

标签: hadoop syncsort-dmx-h

我有一个输入文件,其中一列作为ID,另一列作为计数器值。基于计数器值,我将数据从输入过滤到输出文件。我在DMExpress中完成了一项任务,并检查了计数器和ID。我输入文件中的每个id都有10行。如果每个id的计数器值为3,那么我将为此ID提取前3行,然后检查下一个ID。在hadoop中运行此任务时,Hadoop将获取多个ID的前3条记录,并为其他ID创建新文件(当达到所需大小时)。

现在,当hadoop在文件0中写入记录时,它正在为ID X提取3条记录,但是当它写入输出文件的另一部分(文件1)时,它正在写入ID中的第一条记录上一个文件的X(位于文件0的最后一行。它是ID X的第4个记录)。这反过来增加了输出文件中的记录数。

例如:这是输入文件中的记录。

..more records..
1|XXXX|3|NNNNNNN
2|XXXX|3|MMMMMMM
3|XXXX|3|AAAAAAA
4|XXXX|3|BBBBBBB
5|XXXX|3|NNNDDDD
6|YYYY|3|QQQQQQQ
7|YYYY|3|4444444
8|YYYY|3|1111111
..more records..

hadoop正在创建的输出文件如下:

file 0 :
..more records..
1|XXXX|3|NNNNNNN
2|XXXX|3|MMMMMMM
3|XXXX|3|AAAAAAA

file 1:
4|XXXX|3|BBBBBBB
6|YYYY|3|QQQQQQQ
7|YYYY|3|4444444
8|YYYY|3|1111111
..more records..

*第4行ID:XXXX不应该在那里! 为什么hadoop没有正确过滤计数器?

0 个答案:

没有答案