最近由於要使用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就好了