我有两个问题。
我在做Map制作教程enter link description here
我知道setJarByClass的作用是指定mapper类和reducer类的位置。当我运行Wordcount2类**而没有job.setJarByClass(WordCount2.class)**时,它运行正常。所以,我认为如果我不指定它,Hadoop会自动执行。
**这是我的问题1。**它是正确的吗?猜测Hadoop自动完成。
当我用job.setJarByClass(WordCount.class)运行Wordcount2类时,它运行正常,与上面的情况相同。我所期望的是wordcount类的map和reduce函数将被执行。
**这是我的问题2。**在这种情况下,为什么要像运行Wordcount2类那样运行代码?
1条答案
按热度按时间z31licg01#
这是为了设置作业驱动器入口点,而不是Map器和简化器...... jar可以有多个类,所以您需要设置一个类,否则我相信它会将给定的JAR传递给
hadoop jar
命令。但是如果给定的JAR没有主入口点,并且没有setJar
方法调用,那么它将失败这段代码还包括setMapperClass和setReducerClass(以及combiner),如果您实际上想测试通过jar方法自动设置的内容,请删除它们