当前位置: 首页 > 知识库问答 >
问题:

如何控制hadoop流式输出文件的数量

顾骏祥
2023-03-14

有没有办法使用hadoop流作业将这20,000个文件合并到10,000个文件?或者,换句话说,有没有办法控制hadoop流式输出文件的数量?

提前感谢!

共有1个答案

莘睿
2023-03-14

看起来现在你有一个只有地图的流作业。只有映射的作业的行为是每个映射任务有一个输出文件。对于改变这种行为,你无能为力。

您可以通过添加reduce阶段来利用MapReduce的工作方式,以便它有10,000个reducer。然后,每个还原器将输出一个文件,因此您只剩下10,000个文件。注意,你的数据记录将“分散”在10,000...不会只是两个文件串联。为此,在命令行arg中使用-d mapred.reduce.tasks=10000标志。

这可能是默认行为,但您也可以将标识简化程序指定为简化程序。这除了传递记录之外什么也做不到,这就是我认为你在这里想要的。使用此标志执行以下操作:-reducer org.apache.hadoop.mapred.lib.identityreducer

 类似资料:
  • 我使用的是hadoop版本0.20和hadoop-core:1.2.0.jar 有没有可能使用新的hadoop API做到这一点?

  • 问题内容: 我正在尝试在python中找到一种将脚本执行日志重定向到文件以及以pythonic方式的方法。有没有简单的方法可以做到这一点? 问题答案: 我想出了这个[unested] 在python中将期望有一个函数。您可以使用具有此功能的自定义对象。否则,您也可以让sys.stdout引用您的对象,在这种情况下,即使没有,它也会被准备。

  • 使用Spark streaming从Kafka主题读取Json数据 我使用DataFrame处理数据,稍后我希望将输出保存到HDFS文件。问题在于使用: 产生许多文件,有些很大,有些甚至是0字节。 有没有办法控制输出文件的数量?此外,为了避免“相反”的问题,是否有办法也限制每个文件的大小,以便在当前达到一定大小/行数时写入新文件?

  • 问题内容: 假设我有一个Java8 ,并且使用了该流,那么如何控制流中使用的s 的关闭? 请注意,我可能无权访问个人,例如: 在进行了其他一些映射等之后,我终于在续集中失去了。 我首先认为垃圾收集器可以在需要时执行此操作,但是当它很长时,我已经经历了OS描述符耗尽。 问题答案: 关于使用FileReader的一般注意事项:FileReader在内部使用FileInputStream,它会覆盖并且因

  • 问题内容: 我已尝试使用此代码建议(http://www.daniweb.com/forums/thread23883.html#)将控制台输出写入txt文件,但未成功。怎么了? 问题答案: 你需要执行以下操作: 第二句话是关键。它将假定的“最终” 属性的值更改为提供的值。 可以使用类似的方法(和)来更改标准输入和错误流。有关详细信息,请参考。 上面的一个更通用的版本是这样的: 如果为is ,则流

  • 问题语句:我有一个在Xcode中运行的程序,它有一堆print()语句,可以很好地将输出打印到调试控制台。然而,我希望也能够将这些输出重定向到一个文件,这样我就可以让用户将它们发送给我,作为调试的一种方式。 SO上找到的解决方案使我可以将输出重定向到文件,但调试控制台输出将丢失。 问:我想要我的蛋糕和吃它。我希望能够将print()语句重定向到调试控制台和文件。 所以我有引用:https://st