【问题标题】:obtain result of map-reduce job as stream以流形式获取 map-reduce 作业的结果
【发布时间】:2013-01-27 11:03:01
【问题描述】:

我正在用 Java 编写 map-reduce 作业我想知道是否可以将作业的输出作为流(可能是输出流)而不是物理输出文件来获取。我的目标是将流用于另一个应用程序。

【问题讨论】:

  • 从 map-reduce 作业获得的流被暴露给另一个应用程序,就像 outputstream 在文件 I/O 中暴露的方式一样......
  • 在单个java线程中处理大数据?
  • 通常 mapreduce 作业将结果写入输出文件。我的问题是写入文件是否可以作为流公开......

标签: java hadoop stream mapreduce reduce


【解决方案1】:

您可以编写自定义输出格式并将该写入用于您想要的任何流。不一定是文件。请参阅this 教程了解如何编写自定义输出格式。

否则您可以使用 Hadoop Streaming API。看看here

【讨论】:

  • 我想知道map-reduce本身的输出是否是一个流。
【解决方案2】:

我认为您无法使用 Apache-Hadoop 做到这一点。它被设计为在分布式系统中工作,AFAIK 提供发出output stream 的方式将违背目的,因为系统将如何决定要发出的,即哪个reducer!您可以写入平面文件/DB/amazon-s3 等,但也许您不会得到

【讨论】:

  • 所以hadoop的map-reduce的结果只能是一个文件。我理解它是一个分布式系统,结果被写入一个物理文件。我正在探索如何获取文件的输出流,这样我就不会让 map-reduce 框架写入物理文件。
  • 您甚至可以将其直接写入数据库。如果您不希望输出流写入文件,那么您究竟想在这里做什么?如果 hadoop 只是公开一个输出流,那么使用它的应用程序必须连接到 hadoop 系统!如果发生这种情况,hadoop 将需要继续streaming,就像服务器对客户端request 所做的那样!所以基本上你所要求的没有意义。让我们知道您的确切用例,我们可能会提供更好的帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-05-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多