【发布时间】:2011-11-30 12:55:13
【问题描述】:
我正在尝试用 java 编写一个 hadoop mapreduce 程序。输入是一个数组,输出也是一个数组。但到目前为止,我只看到人们使用输入和输出作为它的文件。所以我只是想知道 mapreduce 是否可以有任何其他输入和输出格式。
谢谢
【问题讨论】:
-
???文件实际上是二进制数据的任意数组。您还在寻找什么?
我正在尝试用 java 编写一个 hadoop mapreduce 程序。输入是一个数组,输出也是一个数组。但到目前为止,我只看到人们使用输入和输出作为它的文件。所以我只是想知道 mapreduce 是否可以有任何其他输入和输出格式。
谢谢
【问题讨论】:
Hadoop 支持多种输入和输出格式。检查InputFormat 和OutputFormat 的子类。如果需要任何自定义格式,请扩展 InputFormat 和 OutputFormat。在 DB 输入/输出格式上查看来自 Cloudera 的 article。
【讨论】:
Hadoop 是一个文件系统,map-reduce 的重点是处理通常无法放入内存的大量数据 - 因此输入和输出通常会以某种方式存储在磁盘上(也称为文件)。 Hadoop mapreduce 类支持读取 hadoop 支持的不同类型的文件(文本文件、顺序文件),您还可以编写自己的源代码,例如HBase comes with a map-reduce wrapper 读取其文件格式。我没有尝试过,但正如 Praveen 指出的文章所证明的那样,您可以从其他来源阅读
输出更容易 - 因为您正在编写 Java 代码,所以您可以在 reduce 阶段做任何事情,所以如果您想在 reduce 阶段将消息放入队列中,只需这样做
【讨论】: