0

我在这里寻找解决我的简单愚蠢问题的方法。比如说,我有一个巨大的 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
------------------
-----------------

编辑:说我有一个 10 TB 的文件而不是 10 GB 的文件,那么现在可以做什么?除了使用 Hadoop 方式处理文件之外,另一种更快的最佳方法是什么?

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

4

2 回答 2

2

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

$ cat testFile
line1
line2
line3

$ nl testFile
   1   line1
   2   line2
   3   line3
于 2012-05-30T08:38:16.360 回答
0

与仅仅打开文件、逐行读取并将每一行存储在一个新文件中(带有序列号/序列号)相比,不确定您是否会从 Hadoop 中受益于这样一个微不足道的操作。

于 2012-05-30T08:24:22.493 回答