0

我正在尝试使用 map-reduce 从 FTP 并行读取文件。我有一个可以读取文件并对其执行字数统计的代码。但是,当输入大小很大(具体超过 2 MB)时,它会失败。它以 Spill 0 completed 消息停止,然后是 Map 100% Reduce 0% 。然后一个连接被服务器关闭。我不太明白。溢出 0 是什么意思?为什么大输入的代码会失败?如何拆分输入并将其提供给 mapper ?那会有帮助吗?我可以扩展 FileInputFormat 类来解决这个问题吗?谢谢 :)

4

1 回答 1

0

是的,你可以实现你的 on InputFormat。除了FileInputFormatHadoop 中的其他几个,例如TextInputFormat,KeyValueInputFormat等。您还可以定义如何从拆分中读取记录。为此,您需要实现自己的RecordReader.

http://developer.yahoo.com/hadoop/tutorial/module4.html

例如,默认值InputFormatTextInputFormat读取文件并使用 aLineRecordReader逐行获取记录。如果您正在从文件中读取结构化数据,您可以实现自己的RecordReader,因此每条记录都是来自该文件的数据结构。

无论如何,从 FTP 读取文件的 MapReduce 工作真的很奇怪。Hadoop 之所以有效,是因为数据存储在 Hadoop 的文件系统 (HDFS) 上,这是一个分布式文件系统,其中每个文件都被分成块并分布在文件系统的所有节点上。恕我直言,您应该将该文件下载到您的 HDFS 并执行您的 MapReduce 作业。

于 2012-11-26T14:54:49.943 回答