IDEA 开发hadoop项目配置及打包

一、IDEA开发hadoop项目配置

1.新建工程:

    

2.选择maven,勾上create from archetype,选择quickstart:

    

3.填写maven的坐标,“groupId”,“artifactId”,以及“version”,其中groupId是公司域名的反写,而artifactId是项目名或模块名,而version就是该项目或模块所对应的版本号,点击next:
    
4.可以使用本地的maven,直接点击next。或者下载maven,勾选第一个Override,使用下载的settings目录:

    

5.写项目名,项目位置:

    

6.点击finish,修改pom.xml,添加Hadoop依赖,添加完后点击右下角弹出的import changes,会自动添加依赖的jar包:

     

    

7.项目配置完成。

二、IDEA开发hadoop项目打包

1.右击项目名称,选择Open Module Settings

    

2.选择Artifacts,点击中间绿色的+号,选择JAR,再选择第二个选项


3.点击Main Class右边的小方块选择主类,下一个选项如果要打成一个压缩包选择第一个,如果其他依赖包要分开放也就是最后是多个jar包选择第二个选项。我选第一个,然后点击OK

    

4.勾选include in project build,点击+和-号添加最后jar包内的其他jar包,主要是将项目依赖的jar包导入,如果一开始配置好了,直接点OK就行。

    

5.然后点击Build按钮,选择Build Artifacts... 

    

6.出现以下选择框,第一次使用选择Build,非第一次选Rebuild

    

7.Build完之后多出了out目录与target目录,接着就可以去本地out目录下找已经完成的jar包


三、出现过的问题

    按以上步骤完成的jar包在使用hadoop jar命令会出现奇怪的问题,如果你的MapReduce程序的输入路径,输出路径写死的话不会出现问题,但是如果输入路径和输出路径接受的是参数的话会报错。具体情况如下:

    比如使用hadoop jar   /本地目录/包名.jar    包名.主类名   输入路径   输出路径。

    会首先报出FileAlreadyExistsException: Output directory  输入路径,也就是把输入路径当成了输出路径

    删除输入路径后会报出InvalidInputException: Input path does not exist  /hdfs目录名/包名.主类名

    由此可以判定hadoop jar命令将包名.主类名当成了输入路径,把输入路径当成了输出路径,输出路径多余。

解决办法:

    在打包第3步的时候千万不要选择主类,让它空着。hadoop jar命令的第二个参数需要你输入主类的名称,如果你打包时选择了主类的名称,它就会将你的包名.主类名当成输入路径,因为它已经知道主类是什么了,所以会产生这样的错误。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值