获取输入流作为Hadoop映射方法的源

时间:2013-10-20 23:17:34

标签: hadoop inputstream

我正在处理目录中的一组文件,这是另一个任务的输出。我需要立即处理整个文件的内容(计算MD5校验和并进行一些转换)。我不确定我的Mapper的签名应该是什么样子,如果我要做的那样是

class MyMapper extends Mapper<LongWritable, Text, NullWritable, NullWritable> { ... }

然后我将在 map 方法中获取输入文件的全部内容。这将存储在内存中,但文件可能非常大。

有没有办法不将完整的“记录”读入内存以供Hadoop map任务处理,但是获取记录的“流”?

1 个答案:

答案 0 :(得分:0)

你实际上不需要担心它。 Hadoop经过优化,可充分利用群集的所有资源来完成工作。它的重点是抽象出所有这些的低级细节,让你专注于你的用例。

我向你保证Hadoop可以处理你的文件。如果它们非常大并且/或者您的群集具有不太强大或不可靠的计算机,则作业可能需要更长时间。但他们不会失败(没有任何其他错误)。

所以我认为你的方法很好。我要做的唯一建议是考虑避免使用规范的MapReduce,因为它不是一个高足够的抽象级别。请改为考虑CascadingJCascalog