Eclipse中运行Sqoop诡异问题解决
本博客属原创文章,转载请注明出处:http://guoyunsky.iteye.com/blog/1392535
欢迎加入Hadoop超级群: 180941958
今天下午碰到了一个诡异的Sqoop问题,一开始认为是奇迹,后来在牛人的协助下才终于找出原因.这里记录下.
我这里通过Sqoop从Mysql中导数据到HDFS,再从HDFS中读取这些数据.我们知道Sqoop会通过SQL语句先获取表结构,然后生成相应的Java类.后来我更改了SQL语句,如之前SELECT AGE,NAME FROM USER;AGE是数值型,NAME是VARCHAR型.后来更改了表结构或者临时SQL转换将AGE换成了VARCHAR.
正常情况下,由于AGE类型已经更改,那么对应Java类也会随着更改.但在Eclipse环境中发生以下不可思议:
Sqoop可以正常获取数据,生成相应的Java class,并且写入到HDFS中.但是在Eclipse中从HDFS中读取这些数据,却报错.报错主要是AGE是STRING,无法转换成Number.如此看来是沿用了老的Java Class,也就是更改SQL以前Sqoop生成的Java Class.
有些不可思议,Sqoop明明会根据SQL重新生成对应的Java Class.看它生成的Java Class,所对应的AGE类型也确实正确.但是什么原因呢?
在牛人的帮助下才知道原因.由于Eclipse中从HDFS中读取刚导入的数据,需要将它生成的Java Class加载进来.而之前生成的Java Class已经被编译成class放在workspace/yourProject/bin目录下.对于Eclipse来说,首先是加载自己的Class,虽然这里Sqoop生成的Java Class才是正宗.所以Eclipse一直用以前的Java Class去解析数据,导致类型不匹配.
如果是使用Sqoop命令,或者不在Eclipse环境里执行或许就不会发生这种问题.
折腾了一下午,也明白了这么一回事.
更多技术文章、感悟、分享、勾搭,请用微信扫描:
推荐阅读
-
Eclipse中导入Maven Web项目并配置其在Tomcat中运行图文详解
-
在Eclipse中运行Solr 基础知识
-
eclipse springboot工程打war包方法及再Tomcat中运行的方法
-
Eclipse中serverRuntimeEnvironment中没有Tomcat选项问题解决办法
-
解决Eclipse中“诡异”的错误:找不到或无法加载主类
-
在Eclipse中运行Solr 基础知识
-
MyEclipse/Eclipse结构的JavaWeb项目导入Eclipse中运行教程 步骤
-
在Eclipse中启动JBOSS 运行一会儿就自动关闭
-
在Eclipse中启动JBOSS 运行一会儿就自动关闭
-
在eclipse中设置运行参数