MapReduce程序的jar包导出小问题

      这段时间刚上手hadoop各种趟坑,跟个一个小问题纠缠一上午,最终判定又遇到坑,切入正题。
自己写的wordcount工程导出jar包,输入运行命令:
      hadoop jar jar/mr-WordCount.jar cn.mapreduce.MyWordCount /wordcount /result
其中:
      hadoop jar:jar包的运行命令。
      jar/mr-WordCount.jar:mr-WordCount.jar是wordcount工程导出的jar包的名字,jar/mr-WordCount.jar是这个jar包存放的路径。
      cn.mapreduce.MyWordCount:cn.mapreduce程序的包名,MyWordCount是wordcount工程的主类。这个包名必须加上,小编测试时不加包名会报错。
      /wordcount:程序的输入文本wordcount在HDFS上的路径。
      /result:程序的输出结果的路径。这个路径不能是已经存在的,否则不能运行。
回车后出现如下结果:
这里写图片描述
最后一句异常报错:Exception in thread “main” org.apache.hadoop
.FileAlreadyExistsException: Output directory hdfs://localhost:9000/wordcount already exists
意思是说输出程序结果的输出路径已存在了,不能运行,眨眼一看,貌似是对的,按照提示各种改路径,最终发现根本不是输出路径的问题。


原因如下:
      其实是小编导出jar包的时候手贱了一下,设置了主类,如下界面。
这里写图片描述
就是这个原因。
解决办法:
      重新导出jar包,不设置主类,再次运行上面的hadoop jar命令,运行成功,界面如下,(太长了就不全贴出来了)。
这里写图片描述
那么如果设置了主类怎么办呢,简单!jar的执行命令如下:

hadoop jar jar/mr-WordCount.jar /wordcount /result

在hadoop jar命令中取消掉包名+主类那部分,其他保持不变就可以了,小编亲测成功。如下界面所示
这里写图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值