我正在尝试做一个简单的任务:我需要使用带有Python的Hadoop流将文本文件转换为大写。
我想通过使用TextInputFormat来实现它,它将文件位置键和文本值传递给映射器。问题是Hadoop流式传输automatically discards the file position keys,这是保存文档排序所必需的。
如何保留输入到映射器的文件位置信息?或者有没有更好的方法使用Hadoop流将文档转换为大写?
谢谢。
答案 0 :(得分:0)
如果您的工作只是大写单个文件,那么Hadoop实际上并不会给您任何将文件流式传输到单个计算机的任何内容,执行大写,然后将内容写回HDFS。即使有一个巨大的文件(比如1TB),你仍然需要将所有东西都放到一个减速器上,这样当它被写回HDFS时,它就存储在一个连续的文件中。
在这种情况下,我会将您的流式传输作业配置为每个文件只有一个映射器(将分割的最小和最大大小设置为巨大的,大于文件本身的大小),并运行仅限地图的作业。