0

我不确定我是否理解 TextInputFormat 的工作方式。在文档中它说:

纯文本文件的 InputFormat。文件被分成几行。

所以我假设当我简单地将我作为 map 函数的输入的值转换为 String 时,我的文件中会有一行的 String 表示。

    public void map(LongWritable key, Text value, Context context) throws IOException, InterruptedException {

    String line = value.toString(); \\ one line of my input file?
    ...

    }

但是,在进一步处理该行后,事实证明它实际上不是我文件中的一行。我的文件 city.dat 如下所示:

Andorra la Vella|ad|Andorra la Vella|20430|42.51|1.51
Canillo|ad|Canillo|3292|42.57|1.6
...

谁能告诉我如何在我的地图函数中处理这个文件的行?

4

1 回答 1

1

TextInputFormat 用作纯文本文件的 InputFormat。文件被分成几行。换行或回车用于表示行结束。键是文件中的位置,值是文本行。如果在您的情况下,行尾不是换行符或回车,您必须编写自己的 InputFormat。

看看这个博客点没有。3 它肯定会在行尾分解行。 http://blog.cloudera.com/blog/2011/01/lessons-learned-from-clouderas-hadoop-developer-training-course/

我建议通过在 UltraEdit 等 TextEditor 中打开文件来检查你的文件,然后检查换行符。

看看有没有帮助。

于 2012-11-04T18:41:19.983 回答