0

我有一个输入文件,其中一列作为 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..

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

4

0 回答 0