本帖最后由 blackmoon 于 2015-5-13 16:02 编辑
报错唯一的变化就是我标出来的红色部分的变化,其他还都一样 = =
不过这个报错我解决了,虽然后面又出来了其他问题,不过也算前进一步。
感谢各位的协助,我现在把解决办法写出来:
由于上面lsof查看,jar包已经被进程使用了,我就开始怀疑不是加载的问题,于是先忘记前面查看http://my.oschina.net/zhangliMyOne/blog/97236时先入为主的思路,返回java报错本身来看。
java.lang.IllegalAccessError: class com.google.protobuf.HBaseZeroCopyByteString cannot access its superclass com.google.protobuf.LiteralByteString
那么com.google.protobuf.HBaseZeroCopyByteString这个class到底是在哪里呢? 于是写了个脚本来搜索,然后发现com.google.protobuf.HBaseZeroCopyByteString这个class就在hbase-protocol-0.98.6-cdh5.3.3.jar里面...... 根本不是加载问题......没加载上连这个错误都不会有.......
那么com.google.protobuf.LiteralByteString这个类又在哪里呢?发现在hadoop的lib下面就有protobuf-java-2.5.0.jar。
然后再返回完整报错,程序应该是执行到sqoop2尝试连接hbase获取meta data,那么应该是sqoop2调用com.google.protobuf.HBaseZeroCopyByteString时发生的问题,于是把protobuf-java-2.5.0.jar拷贝到sqoop2的lib下面一份,重启sqoop2,再次执行job,不再报这个错误了,现在想来加载不到superclass,自然也就cannot access.....不过貌似会报java.lang.IllegalAccessError的原因还有好几种,这次是这样,之后遇到问题还是不能一概而论。
新出现的报错内容如下,这已经是连接上hbase后,发现没有表所以才报错了,应该算前进了一大步吧~
Caused by: org.apache.phoenix.schema.TableNotFoundException: ERROR 1012 (42M03): Table undefined. tableName=MAIN.USERS
|