Sqoop找不到主类 Error: Could not find or load main class org.apache.sqoop.Sqoop

本文详细介绍了如何解决Sqoop1.4.5与Hadoop2.X之间的兼容性问题,特别是针对执行sqoop脚本时出现的“Could not find or load main class”错误提供了解决方案。

最近由于要使用Sqoop来到出数据到hdfs,可是发现Sqoop1.4.5跟hadoop2.X不兼容,需要对Sqoop1.4.5进行编译,编译的具体方法见:http://my.codeweblog.com/AlbertHa/blog/318551

如果一切都顺利的话需要就不会遇到什么问题,但是有一个问题一直困扰了一周!

这是问题是什么呢? 就是每次执行$SQOOP_HOME/bin/sqoop脚本的时候总是抱一个错误:

Error: Could not find or load main class org.apache.sqoop.Sqoop

这是因为找不到sqoop-1.4.5.jar文件导致的。

从网上搜了很多解决办法,具体的做法是:将sqoop-1.4.5.jar文件拷贝到$HADOOP_HOME/lib目录下一份,可是我照做的,但问题还是依旧,一周了,我实在是到了要放弃的地步了,开始怀疑自己的能力了都!

今天我在绝望之时,打开sqoop脚本看了一下,发现脚本的最后有这样一句:

exec ${HADOOP_COMMON_HOME}/bin/hadoop org.apache.sqoop.Sqoop "$@"

这个应该就是执行hadoop jar命令的地方,看到这里或许你应该明白这个错误该怎么解决了吧?

解决办法

修改$SQOOP_HOME/bin/sqoop脚本:

* 修改前:

exec ${HADOOP_COMMON_HOME}/bin/hadoop org.apache.sqoop.Sqoop "$@"

* 修改后:

exec ${HADOOP_COMMON_HOME}/bin/hadoop jar $SQOOP_HOME/sqoop-1.4.5.jar org.apache.sqoop.Sqoop "$@"

即:显示指定sqoop-1.4.5.jar文件的所在位置。

然后执行sqoop help命令,就不会再报Could not find or load main class org.apache.sqoop.Sqoop 的错误了。

版本说明

Hadoop版本:Hadoop2.4.0

Sqoop版本:sqoop-1.4.5.bin__hadoop-2.0.4

 

 

不过视频上说直接可用,是不是因为我没在hxsyl下source /etc/profile,因为echo $SQOOP_HOME,还是以前的缓存,source就好了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值