我在这里寻找解决我简单愚蠢问题的方法。比如说,我有一个巨大的 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中获得任何好处,而不是打开文件,逐行读取并将每一行存储在新文件中(前面有一个序列/序列号)。