【问题标题】:GAE MapReduce, How to write Multiple OutputsGAE MapReduce,如何编写多个输出
【发布时间】:2013-01-31 21:42:59
【问题描述】:

我有一个数据集,我对它进行了多次映射。

假设我有 3 个用于 reduce 函数的键值对,如何修改输出以使我有 3 个 blobfiles - 每个键值对一个?

如果我可以进一步澄清,请告诉我。

【问题讨论】:

  • 目前mapreduce管道的输出会自动输出单个key到blobfile(包含所有3个key-value对)。
  • 我想我正在寻找的是类似于 Hadoop 中的 MultipleOutputs 类,您可以在其中写入不同的输出。

标签: python google-app-engine mapreduce


【解决方案1】:

我认为 GAE Mapreduce 库中不存在(还没有?)这样的功能。

根据数据集的大小和所需的输出类型,您可以通过将 reducer 选为另一个输出编写器来进行少量投资。例如,如果一个 reducer 输出应该直接返回到数据存储,而另一个输出应该进入一个文件,您可以自己打开一个文件并将输出写入其中。或者,您可以使用operation.db.Put 序列化中间映射结果并将其显式存储到临时数据存储中,并在该数据存储上执行单独的 Map 或 Reduce 作业。当然,这最终会比第一种解决方法更昂贵。

在您的特定键值示例中,我建议写入 Google 云存储文件,并根据需要对其进行后处理以将其拆分为三个文件。这也可以让您更好地控制最终文件名。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-03-04
    • 2014-07-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-09
    相关资源
    最近更新 更多