使用Python进行Hadoop流式处理:跟踪行号

时间:2013-11-30 17:36:46

标签: python hadoop position streaming line-numbers

我正在尝试做一个简单的任务:我需要使用带有Python的Hadoop流将文本文件转换为大写。

我想通过使用TextInputFormat来实现它,它将文件位置键和文本值传递给映射器。问题是Hadoop流式传输automatically discards the file position keys,这是保存文档排序所必需的。

如何保留输入到映射器的文件位置信息?或者有没有更好的方法使用Hadoop流将文档转换为大写?

谢谢。

1 个答案:

答案 0 :(得分:0)

如果您的工作只是大写单个文件,那么Hadoop实际上并不会给您任何将文件流式传输到单个计算机的任何内容,执行大写,然后将内容写回HDFS。即使有一个巨大的文件(比如1TB),你仍然需要将所有东西都放到一个减速器上,这样当它被写回HDFS时,它就存储在一个连续的文件中。

在这种情况下,我会将您的流式传输作业配置为每个文件只有一个映射器(将分割的最小和最大大小设置为巨大的,大于文件本身的大小),并运行仅限地图的作业。