我正在使用Hadoop,并与一个地图任务一起工作,该任务创建了我想要保留的文件,目前我将这些文件通过收集器传递给reduce任务。然后,reduce任务将这些文件传递给它的收集器,这样我就可以保留这些文件。
我的问题是,我如何可靠而有效地保留map创建的文件?
我知道我可以关闭自动删除map的输出,但这是不允许的,他们有什么更好的方法吗?
你可以把它分成两个作业。
首先创建一个只输出你想要的序列文件的map作业。
然后,把你现有的工作(在地图上什么都不做了,但你可以根据你的实现& 使用案例做一些紧缩)和减少,就像你现在做的那样,通过输入前一个map only工作作为你的输入到第二个工作。
你可以把这一切都包在一个jar里,运行2个jar,把输出路径作为参数传递给第二个作业的输入路径。