1

几天以来,我一直在尝试了解 hadoop mapreduce 程序。我看到了下面的说法。

conf.setInputFormat(TextInputFormat.class);

我不会质疑这个声明的合法性,因为程序运行没有问题。有人可以解释为什么 TextInputFormat.class 是输入而不是文本输入格式类型的对象吗?我也可以对其他方法使用相同的约定吗?在什么情况下会失败?

这是 setinputformat 的签名。

<http://hadoop.apache.org/docs/current/api/org/apache/hadoop/mapred/JobConf.html#setInputFormat(java.lang.Class)>

setInputFormat(Class<? extends InputFormat> theClass) 

Set the InputFormat implementation for the map-reduce job.
4

2 回答 2

3

mapper 和 reducer 需要知道什么的格式。他们不需要真正的处理它。每个映射器/缩减器都将使用它Class来实例化自己的反射。这就是给某人锤子和告诉某人使用锤子的区别。您的特定示例是使用锤子的说明。

于 2013-10-11T19:54:51.563 回答
2

是的,您可以将类作为参数传递。以下是如何将类作为参数传递的简短示例:

public void foo(Class obj){
    Object ob = obj.newInstance();
}
于 2013-10-11T19:41:10.030 回答