關於Hadoop_env.sh中的HADOOP_CLASSPATH


   之前博客里介紹了如何自定義DoubleArrayWritable,並將該類型的value寫入SequenceFile文件中,為了能夠使用命令查看這個文件中的內容(果然坑都是一步一步給自己挖的)參考了網友博客的內容,將DoubleArrayWritable類型打成Jar包,然后將這個Jar包的路徑添加到Hadoop_env.sh配置文件中的HADOOP_CLASSPATH配置項中作為其配置值,添加完成之后再輸入命令:

hadoop fs -text /10Seq

太神奇了,不再提示"DoubleArrayWritable不能加載了",可以看到文件內容了,當時就感嘆這招太神奇了,不過今天運行MR程序的時候,提示“java.lang.ClassNotFoundException:....MyMapper”,還有個錯誤就是“no job jar set”這是沒有設置jar包的意思(可是我設置了呀,job.setJarbyClass(MutiDoubleInputMatrixProduct.class))。就是找不到自定義的Mapper類MyMapper。試了很多方法都不成功,刪掉之前在Hadoop_env.sh配置文件中的HADOOP_CLASSPATH配置值之后,就可以了。HADOOP_CLASSPATH應該使用默認值的,當我們給其賦值之后就會覆蓋默認值,然后就找不到一些基礎類的定義了,例如Mapper類,找不到Mapper類的定義,自然也就無法創建MyMapper。具體是什么機制還有待深究。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM