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



我在这里寻找解决我简单愚蠢问题的方法。比如说,我有一个巨大的 10GB 文本文件,其中的记录由""分隔,我提供该文件作为 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
------------------
-----------------

编辑:假设我有一个 10 TB 的文件,而不是 10GB 的文件,那么现在该怎么办?与其使用 Hadoop 方式处理文件,还有什么其他最好的方法来更快地处理它?

而且,我还想使用多个减速器而不是单个减速器。

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

$ cat testFile
line1
line2
line3
$ nl testFile
   1   line1
   2   line2
   3   line3

不确定您是否会从Hadoop中获得任何好处,而不是打开文件,逐行读取并将每一行存储在新文件中(前面有一个序列/序列号)。

最新更新