本博客属原创文章,转载请注明出处: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中设置和使用远程调试来处理Sqoop的问题。 首先,为了在Eclipse中进行远程调试,我们需要确保项目配置正确。在描述中提到了`maven-war-plugin`,这是Maven构建过程中用来打包Web应用的...
在这个场景中,我们遇到了一个关于Sqoop运行时的问题,即"找不到或无法加载主类 org.apache.sqoop.sqoop"。这个问题通常是由于Java运行环境配置不正确或者 Sqoop 的依赖库没有被正确地包含在执行环境中所导致的。 ...
3. **配置问题**:Sqoop的配置文件(如`sqoop-site.xml`)中,如果指定了错误的类路径或库路径,也会导致 Sqoop 在运行时无法找到必要的库文件。 为了解决这个问题,你可以按照以下步骤操作: 1. **确认依赖**:...
在问题解决过程中,利用 Sqoop 提供的调试工具和日志信息是非常有帮助的。对于“F_TM_TRADEMARK.java”这个文件,它可能是一个由Sqoop生成的Java Bean类,用于表示数据库表`F_TM_TRADEMARK`的数据结构,这也可能是...
Sqoop是一款功能强大且广泛应用于大数据领域的数据导入工具,该工具可以将关系数据库中的数据导入到Hadoop生态系统中,如Hive、HBase等。本文档旨在为读者提供一个全面的Sqoop中文手册,涵盖了Sqoop的使用、codegen...
Sqoop是Apache Hadoop生态中的一个工具,用于在Hadoop和关系型数据库之间高效地导入导出数据。在CDH(Cloudera Distribution Including ...在使用过程中,若遇到问题,查阅官方文档或社区资源通常能找到解决方案。
在将 mysql 数据库中的表导入到 HDFS 中时,需要启动 hadoop,登录 mysql 数据库,查看 hive 数据库中有哪些表,然后使用 sqoop 命令将 hive 数据库中的表导入到 HDFS 中。最后,查看是否导入 HDFS 中。 Sqoop ...
使用sqoop2从mysql导入hadoop时,导入的数据带单引号。是由于sqoop2的一个bug导致,该包上传到sqoop_home/server/lib替换原来的jar包后,重启sqoop server,即可解决。
解决这些问题需要对Sqoop和Hive的底层原理有深入理解,并结合日志分析和调试。在实际操作中,通常需要尝试多种策略,以找到最适合特定场景的解决方案。对于复杂的问题,可能还需要查阅官方文档或社区讨论,以获取...
本资源是把sqoop的源码按照官方推荐的issue解决方案重新编译后的版本。sqoop-1.4.7.bin__hadoop-2.6.0-2020.0508.tar.gz是已完成编译的tar包。sqoop编译.zip是编译所需要改的配置以及步骤。 各位请二选其一吧。这个...
4. 配置 configure-sqoop 文件:在 configure-sqoop 文件中配置 Sqoop 的各种参数,以便 Sqoop 可以正确地工作。 Sqoop 的应用场景非常广泛,例如: * 数据迁移:Sqoop 可以将数据从一个数据源迁移到另一个数据源...
在这个“sqoop2的安装包”中,包含的文件是`sqoop-1.99.7-bin-hadoop200`,这表明我们处理的是Sqoop 1.99.7版本,适用于Hadoop 2.0.0版本的环境。 首先,了解Sqoop2的基本概念是非常重要的。Sqoop2主要由三个核心...
确保你已经将此 JAR 文件放在 Hadoop 的类路径 (classpath) 中,这样 Sqoop 在运行时能够找到并使用它。 其次,`json-to-sqoop.jar` 是一个扩展 Sqoop 功能的第三方库,它可能包含用于将 JSON 数据转换为 Sqoop ...
在这个版本中,Sqoop 可能会包含更多的功能改进和修复了一些已知问题,以更好地适应 Hadoop 的发展。Hadoop 2.6.0 是一个稳定版本,提供更好的性能和兼容性。 ### Sqoop 的核心功能 1. **数据导入**: Sqoop 可以将...
Sqoop 集群搭建是指在 Hadoop 集群环境中安装和配置 Sqoop,以实现数据的高效转换。 一、Sqoop 安装 Sqoop 的安装可以分为三步:下载 Sqoop 压缩包、解压缩包、将 Sqoop 拷贝到指定目录下。 首先,下载 Sqoop ...
本资源提供的 Sqoop_1.4.6 安装包,是一个适用于大数据处理环境的重要组件,主要用于解决传统数据库与Hadoop之间的数据迁移问题。 Sqoop的工作原理主要基于MapReduce,它将数据库中的数据批量导入到HDFS(Hadoop...
测试Sqoop安装是否成功,可以运行 `sqoop help` 查看可用命令,如 `codegen`, `create-hive-table`, `eval`, `export`, `help` 等。 【数据导入】 Sqoop 的 `import` 命令用于从关系型数据库导入数据到Hadoop集群...
1. 高效的大数据交流:Sqoop 能够快速地将关系型数据库的数据导入到 Hadoop 与其相关的系统中。 2. 并发特性和容错:Sqoop 的架构非常简单,整合了 Hive、Hbase 和 Oozie,通过 map-reduce 任务来传输数据,从而提供...
sqoop安装详解以及sqoop内容介绍使用介绍 集群介绍 sqoop:是一个工具,主要用于导入导出,实现MySQL到Hadoop之间数据的转换 2、导入数据:从结构化数据(Mysql,oracle,db2,)导入到半结构化或非结构化hadoop中...