我不知道Hadoop中的setJarByClass(job)

3npbholx  于 2023-03-01  发布在  Hadoop
关注(0)|答案(1)|浏览(241)

我有两个问题。
我在做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类那样运行代码?

z31licg0

z31licg01#

这是为了设置作业驱动器入口点,而不是Map器和简化器...... jar可以有多个类,所以您需要设置一个类,否则我相信它会将给定的JAR传递给hadoop jar命令。但是如果给定的JAR没有主入口点,并且没有setJar方法调用,那么它将失败
这段代码还包括setMapperClass和setReducerClass(以及combiner),如果您实际上想测试通过jar方法自动设置的内容,请删除它们

相关问题