我几天以来一直在努力了解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.
答案 0 :(得分:3)
映射器和缩减器需要知道格式的种。他们不需要真正的手柄。每个映射器/缩减器将使用Class
来使用反射来实例化它们自己。这是给别人锤子和告诉别人使用锤子的区别。您的具体示例是使用锤子的说明。
答案 1 :(得分:2)
是的,您可以将该类作为参数传递。 下面是如何将class作为参数传递的简短示例:
public void foo(Class obj){
Object ob = obj.newInstance();
}