我的reducer类使用TextOutputFormat(Job提供的默认OutputFormat)生成输出。我想在MapReduce作业完成后使用此输出来聚合输出。除此之外,我喜欢用TextInputFormat写出聚合信息,以便下一次MapReduce任务迭代可以消耗此过程的输出。谁能给我一个关于如何写&用TextFormat阅读?顺便说一下,我使用TextFormat而不是Sequence的原因是互操作性。输出应由任何软件使用。
答案 0 :(得分:5)
不要排除序列文件;它们可以快速轻松地链接MapReduce作业,您可以使用“hadoop fs -text filename ”以文本格式输出它们,如果您需要它们用于其他事情。
但是,回到原来的问题:使用TextInputFormat,将其设置为Job中的输入格式,然后使用TextInputFormat.setInputPaths
指定它应该用作输入的文件。映射器的关键应该是LongWritable,值为Text。
要将TextOutputFormat用作输出,请将其设置为作业中的输出格式,然后使用TextOuputFormat.setOutputPath
指定输出路径。您的reducer(或映射器,如果它是一个仅映射的作业)需要使用NullWritable
作为输出键的类型,以获得每行一个值的文本表示,否则每行将是键的文本表示和由制表符分隔的值(默认情况下,您可以通过将“mapred.textoutputformat.separator
”设置为其他分隔符来更改此值。