我正在尝试使用 map-reduce 从 FTP 并行读取文件。我有一个可以读取文件并对其执行字数统计的代码。但是,当输入大小很大(具体超过 2 MB)时,它会失败。它以 Spill 0 completed 消息停止,然后是 Map 100% Reduce 0% 。然后一个连接被服务器关闭。我不太明白。溢出 0 是什么意思?为什么大输入的代码会失败?如何拆分输入并将其提供给 mapper ?那会有帮助吗?我可以扩展 FileInputFormat 类来解决这个问题吗?谢谢 :)
问问题
1240 次
1 回答
0
是的,你可以实现你的 on InputFormat
。除了FileInputFormat
Hadoop 中的其他几个,例如TextInputFormat
,KeyValueInputFormat
等。您还可以定义如何从拆分中读取记录。为此,您需要实现自己的RecordReader
.
http://developer.yahoo.com/hadoop/tutorial/module4.html
例如,默认值InputFormat
是TextInputFormat
读取文件并使用 aLineRecordReader
逐行获取记录。如果您正在从文件中读取结构化数据,您可以实现自己的RecordReader
,因此每条记录都是来自该文件的数据结构。
无论如何,从 FTP 读取文件的 MapReduce 工作真的很奇怪。Hadoop 之所以有效,是因为数据存储在 Hadoop 的文件系统 (HDFS) 上,这是一个分布式文件系统,其中每个文件都被分成块并分布在文件系统的所有节点上。恕我直言,您应该将该文件下载到您的 HDFS 并执行您的 MapReduce 作业。
于 2012-11-26T14:54:49.943 回答