`
guoyunsky
  • 浏览: 845027 次
  • 性别: Icon_minigender_1
  • 来自: 上海
博客专栏
3d3a22a0-f00f-3227-8d03-d2bbe672af75
Heritrix源码分析
浏览量:204460
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的问题。 首先,为了在Eclipse中进行远程调试,我们需要确保项目配置正确。在描述中提到了`maven-war-plugin`,这是Maven构建过程中用来打包Web应用的...

    sqoop-1.4.7.zip

    在这个场景中,我们遇到了一个关于Sqoop运行时的问题,即"找不到或无法加载主类 org.apache.sqoop.sqoop"。这个问题通常是由于Java运行环境配置不正确或者 Sqoop 的依赖库没有被正确地包含在执行环境中所导致的。 ...

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

    3. **配置问题**:Sqoop的配置文件(如`sqoop-site.xml`)中,如果指定了错误的类路径或库路径,也会导致 Sqoop 在运行时无法找到必要的库文件。 为了解决这个问题,你可以按照以下步骤操作: 1. **确认依赖**:...

    sqoop-javabean-sqoop脚本分隔符失效问题

    在问题解决过程中,利用 Sqoop 提供的调试工具和日志信息是非常有帮助的。对于“F_TM_TRADEMARK.java”这个文件,它可能是一个由Sqoop生成的Java Bean类,用于表示数据库表`F_TM_TRADEMARK`的数据结构,这也可能是...

    Sqoop中文文档

    Sqoop是一款功能强大且广泛应用于大数据领域的数据导入工具,该工具可以将关系数据库中的数据导入到Hadoop生态系统中,如Hive、HBase等。本文档旨在为读者提供一个全面的Sqoop中文手册,涵盖了Sqoop的使用、codegen...

    sqoop-cdh安装包

    Sqoop是Apache Hadoop生态中的一个工具,用于在Hadoop和关系型数据库之间高效地导入导出数据。在CDH(Cloudera Distribution Including ...在使用过程中,若遇到问题,查阅官方文档或社区资源通常能找到解决方案。

    Sqoop安装与使用

    在将 mysql 数据库中的表导入到 HDFS 中时,需要启动 hadoop,登录 mysql 数据库,查看 hive 数据库中有哪些表,然后使用 sqoop 命令将 hive 数据库中的表导入到 HDFS 中。最后,查看是否导入 HDFS 中。 Sqoop ...

    解决sqoop2导入hdfs单引号问题

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

    sqoop导入数据到hive中,数据不一致

    解决这些问题需要对Sqoop和Hive的底层原理有深入理解,并结合日志分析和调试。在实际操作中,通常需要尝试多种策略,以找到最适合特定场景的解决方案。对于复杂的问题,可能还需要查阅官方文档或社区讨论,以获取...

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

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

    Hadoop-Sqoop配置

    4. 配置 configure-sqoop 文件:在 configure-sqoop 文件中配置 Sqoop 的各种参数,以便 Sqoop 可以正确地工作。 Sqoop 的应用场景非常广泛,例如: * 数据迁移:Sqoop 可以将数据从一个数据源迁移到另一个数据源...

    sqoop2的安装包

    在这个“sqoop2的安装包”中,包含的文件是`sqoop-1.99.7-bin-hadoop200`,这表明我们处理的是Sqoop 1.99.7版本,适用于Hadoop 2.0.0版本的环境。 首先,了解Sqoop2的基本概念是非常重要的。Sqoop2主要由三个核心...

    sqoop需要导入的包

    确保你已经将此 JAR 文件放在 Hadoop 的类路径 (classpath) 中,这样 Sqoop 在运行时能够找到并使用它。 其次,`json-to-sqoop.jar` 是一个扩展 Sqoop 功能的第三方库,它可能包含用于将 JSON 数据转换为 Sqoop ...

    Sqoop-linux.zip

    在这个版本中,Sqoop 可能会包含更多的功能改进和修复了一些已知问题,以更好地适应 Hadoop 的发展。Hadoop 2.6.0 是一个稳定版本,提供更好的性能和兼容性。 ### Sqoop 的核心功能 1. **数据导入**: Sqoop 可以将...

    Sqoop集群搭建.

    Sqoop 集群搭建是指在 Hadoop 集群环境中安装和配置 Sqoop,以实现数据的高效转换。 一、Sqoop 安装 Sqoop 的安装可以分为三步:下载 Sqoop 压缩包、解压缩包、将 Sqoop 拷贝到指定目录下。 首先,下载 Sqoop ...

    大数据开发中的Sqoop学习笔记(自己整理版).pdf

    测试Sqoop安装是否成功,可以运行 `sqoop help` 查看可用命令,如 `codegen`, `create-hive-table`, `eval`, `export`, `help` 等。 【数据导入】 Sqoop 的 `import` 命令用于从关系型数据库导入数据到Hadoop集群...

    sqoop的原理及概念

    1. 高效的大数据交流:Sqoop 能够快速地将关系型数据库的数据导入到 Hadoop 与其相关的系统中。 2. 并发特性和容错:Sqoop 的架构非常简单,整合了 Hive、Hbase 和 Oozie,通过 map-reduce 任务来传输数据,从而提供...

    sqoop安装详解以及sqoop介绍

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

    Sqoop_1.4.6安装包.rar

    本资源提供的 Sqoop_1.4.6 安装包,是一个适用于大数据处理环境的重要组件,主要用于解决传统数据库与Hadoop之间的数据迁移问题。 Sqoop的工作原理主要基于MapReduce,它将数据库中的数据批量导入到HDFS(Hadoop...

Global site tag (gtag.js) - Google Analytics