使用Hadoop MapReduce为文本文件中的每个记录添加序列号

时间:2012-05-30 08:03:47

标签: java hadoop mapreduce

我正在寻找解决这个简单愚蠢问题的解决方案。 说,我有一个巨大的10GB文本文件,其中的记录由'\ n'分隔,我提供该文件作为Hadoop框架的输入。 输出应该是一个文件,使其保持与输入文件相同的记录顺序,但在每条记录前面都有一个序列号。

例如,

如果我有输入文本文件,请

this is line one
this is line two
this is line three
this is line four
-----------------
-----------------

输出文件应为,

1 this is line one
2 this is line two
3 this is line three
4 this is line four
------------------
-----------------

编辑:说而不是10GB的文件我有一个10 TB的文件,那么现在可以做些什么呢? 而不是使用Hadoop方式处理文件,可能是另一种更快速的方法吗?

此外,我还想使用多个减速器而不是一个减速器。

2 个答案:

答案 0 :(得分:2)

我同意pap,这里不需要Hadoop。检查命令nl,它在文件的每一行之前添加行号。只需将输出存储在新文件中即可。

$ cat testFile
line1
line2
line3

$ nl testFile
   1   line1
   2   line2
   3   line3

答案 1 :(得分:0)

与仅打开文件,逐行读取并将每行存储在新文件中(序列/序列号前置)相比,不确定您是否会从Hadoop中获益于此类微不足道的操作。