我正在寻找解决这个简单愚蠢问题的解决方案。 说,我有一个巨大的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方式处理文件,可能是另一种更快速的方法吗?
此外,我还想使用多个减速器而不是一个减速器。
答案 0 :(得分:2)
我同意pap,这里不需要Hadoop。检查命令nl,它在文件的每一行之前添加行号。只需将输出存储在新文件中即可。
$ cat testFile
line1
line2
line3
$ nl testFile
1 line1
2 line2
3 line3
答案 1 :(得分:0)
与仅打开文件,逐行读取并将每行存储在新文件中(序列/序列号前置)相比,不确定您是否会从Hadoop中获益于此类微不足道的操作。