`
guoyunsky
  • 浏览: 839143 次
  • 性别: Icon_minigender_1
  • 来自: 上海
博客专栏
3d3a22a0-f00f-3227-8d03-d2bbe672af75
Heritrix源码分析
浏览量:203198
Group-logo
SQL的MapReduce...
浏览量:0
社区版块
存档分类
最新评论

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环境里执行或许就不会发生这种问题.

       折腾了一下午,也明白了这么一回事.

       

 更多技术文章、感悟、分享、勾搭,请用微信扫描:

0
0
分享到:
评论
1 楼 greemranqq 2016-07-21  
at com.sun.tools.javac.api.JavacTaskImpl.call(JavacTaskImpl.java:132)
at org.apache.sqoop.orm.CompilationManager.compile(CompilationManager.java:215)
at org.apache.sqoop.tool.CodeGenTool.generateORM(CodeGenTool.java:108)
at org.apache.sqoop.tool.ImportTool.importTable(ImportTool.java:478)
at org.apache.sqoop.tool.ImportTool.run(ImportTool.java:605)
at org.apache.sqoop.Sqoop.run(Sqoop.java:143)
at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:70)
at org.apache.sqoop.Sqoop.runSqoop(Sqoop.java:179)
at org.apache.sqoop.Sqoop.runTool(Sqoop.java:218)
at org.apache.sqoop.Sqoop.runTool(Sqoop.java:227)
at org.apache.sqoop.Sqoop.main(Sqoop.java:236)



我们的线程处于runable 状态,应该是生成class 的时候,然后cpu100%
sqoop 任务 一直无法结束,这种情况 遇到过吗?  还是 说 class 文件一定要生成?

相关推荐

    eclipse-sqoop.

    利用eclipse开发工具 远程调试sqoop一些相关问题描述。

    sqoop-1.4.7.zip

    运行Sqoop报错:找不到或无法加载主类 org.apache.sqoop.sqoop 将sqoop-1.4.7.jar包放到Sqoop的lib目录下,问题解决。

    Sqoop中文手册.docx

    Sqoop中文手册

    解决sqoop2导入hdfs单引号问题

    使用sqoop2从mysql导入hadoop时,导入的数据带单引号。是由于sqoop2的一个bug导致,该包上传到sqoop_home/server/lib替换原来的jar包后,重启sqoop server,即可解决。

    sqoop重编译版本,解决了联合主键的同步问题

    本资源是把sqoop的源码按照官方推荐的issue解决方案重新编译后的版本。sqoop-1.4.7.bin__hadoop-2.6.0-2020.0508.tar.gz是已完成编译的tar包。sqoop编译.zip是编译所需要改的配置以及步骤。 各位请二选其一吧。这个...

    sqoop.zip解决报空指针的问题所需要的jar

    sqoop.zip解决报空指针的问题所需要的jar.这个jar包适用于安装在CDH6.2.1版本的sqoop

    Sqoop中文文档

    Sqoop中文文档,对于数据导入入门很有帮助。

    sqoop命令参数中文手册

    大数据同步工具sqoop1命令中文手册 以及常用命令说明

    sqoop安装详解以及sqoop介绍

    sqoop安装详解以及sqoop内容介绍使用介绍 集群介绍 sqoop:是一个工具,主要用于导入导出,实现MySQL到Hadoop之间数据的转换 2、导入数据:从结构化数据(Mysql,oracle,db2,)导入到半结构化或非结构化hadoop中...

    sqoop安装与使用

    hadoop中的sqoop安装与使用

    sqoop 用户手册

    Sqoop(发音:skup)是一款开源的工具,主要用于在Hadoop(Hive)与传统的数据库(mysql、postgresql...)间进行数据的传递,可以将一个关系型数据库(例如 : MySQL ,Oracle ,Postgres等)中的数据导进到Hadoop的HDFS中,...

    Sqoop手册(中文版)

    Sqoop手册(中文版),Sqoop官方中文手册(中文版),

    解决sqoop2 数据分隔符为 ',' 以及 string类型数据存在单引号('数据')问题(通过改变源码编译解决 ---可以从源头彻底解决)

    说明: 版本为:sqoop2-1.99.5-cdh5.10.2 解决数据分隔符 以及 string类型数据存在单引号问题(解决方式 通过更改源码SqoopIDFUtils 里面的分隔符来解决此问题 ) ​ 只需要将以下包进行替换 connector-sdk-1.99.5-...

    实战Sqoop数据导入及大数据用户行为案例分析

    07_Sqoop中的增量导入与Sqoop job 08_Sqoop将MySQL数据导入Hive表中 09_Sqoop的导出及脚本中使用的方式 10_案例分析-动态分区的实现 11_案例分析-源表的分区加载创建 12_案例分析-指标分析使用Sqoop导出

    Sqoop 安装包

    postgresql...) 间 进 行 数 据 的 传 递 , 可 以 将 一 个 关 系 型 数 据 库 ( 例 如 :MySQL ,Oracle ,Postgres 等)中的数据导进到 Hadoop 的 HDFS 中,也可以将 HDFS的数据导进到关系型数据库中。...

    sqoop connect sqlserver driver

    sqoop连接sqlserver的驱动工具,没有这个sqoop是连不上滴

    Sqoop集群搭建.

    Sqoop集群搭建.Sqoop集群搭建.Sqoop集群搭建.Sqoop集群搭建.Sqoop集群搭建.Sqoop集群搭建.Sqoop集群搭建.Sqoop集群搭建.Sqoop集群搭建.

    sqoop1.46和1.47

    sqoop框架开发工具使用的jar,目前版本有1.4.6和1.4.7两个jar包,启动Sqoop时,抛出异常:Error: Could not find or load main class .usr.local.sqoop-1.4.7.sqoop-1.4.7.jar 则可以下载资源将sqoop-1.4.7....问题解决

    sqoop-1.4.6.jar

    sqoop-1.4.6.jar,sqoop报错找不到加载类的时候 将该文件放入sqoop的lib文件夹下

    Sqoop安装与使用

    Sqoop即 SQL to Hadoop ,是一款方便的在传统型数据库与Hadoop之间进行数据迁移的工具,充分利用MapReduce并行特点以批处理的方式加快数据传输

Global site tag (gtag.js) - Google Analytics