【发布时间】:2012-11-03 10:49:24
【问题描述】:
我不确定我是否理解 TextInputFormat 的工作方式。在文档中它说:
纯文本文件的 InputFormat。文件被分成几行。
所以我假设当我简单地将作为 map 函数的输入的值转换为字符串时,我的文件中会有一行的字符串表示。
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
...
谁能告诉我如何在我的地图函数中处理这个文件的行?
【问题讨论】:
-
在 TextInputFormat 的情况下,映射的值是输入中的一行。如果不是,那么程序中可能出现了一些问题。
-
那么你确定这个值只包含我输入文件的一行吗?
-
value.toString() 的结果是什么?与您的输入文件在同一目录中是否还有其他文件?如果您提供目录名称,则该目录中的所有文件都将作为输入读取。
-
我的输入目录中只有一个文件。 city.dat 包含上述样式的所有条目
-
您得到的不在输入文件中的行具体是什么,您具体期望什么?
标签: text hadoop mapreduce line textinput