sqoop从mysql导入到hive为啥0变成null

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sqoop从mysql导入到hive为啥0变成null相关的知识,希望对你有一定的参考价值。

1.链接mysql数据库的时候权限错误,这属于前期扫盲错误。
Caused by: com.mysql.jdbc.CommunicationsException: Communications link failure due to underlying exception:

** BEGIN NESTED EXCEPTION **
java.net.ConnectException
MESSAGE: Connection refused
解决方法:http://www.lishiyu.cn/post/56.html
2.表不存在----一般为分隔符的不匹配,我们需要在sqoop导入时指定分隔符
Status : FAILED
java.io.IOException: Can’t export data, please check task tracker logs
Caused by: java.util.NoSuchElementException
at java.util.AbstractList$Itr.next(AbstractList.java:350)
at test.__loadFromFields(test.java:252)
at test.parse(test.java:201)
at org.apache.sqoop.mapreduce.TextExportMapper.map(TextExportMapper.java:83)
导出数据到MySQL,当然数据库表要先存在,否则会报错,此错误的原因为sqoop解析文件的字段与MySql数据库的表的字段对应不上造成的。因此需要在执行的时候给sqoop增加参数,告诉sqoop文件的分隔符,使它能够正确的解析文件字段。hive默认的字段分隔符为'\001',sqoop的默认分隔符是 ','。
参考技术A hive 版本hive-0.11.0
sqoop 版本 sqoop-1.4.4.bin__hadoop-1.0.0
从hive导到mysql
mysql 表:
MySQL> desc cps_activation;
+————+————-+——+—–+———+—————-+
| Field | Type | Null | Key | Default | Extra |
+————+————-+——+—–+———+—————-+
| id | int(11) | NO | PRI | NULL | auto_increment |
| day | date | NO | MUL | NULL | |
| pkgname | varchar(50) | YES | | NULL | |
| cid | varchar(50) | YES | | NULL | |
| pid | varchar(50) | YES | | NULL | |
| activation | int(11) | YES | | NULL | |
+————+————-+——+—–+———+—————-+
6 rows in set (0.01 sec)

Hive表
hive> desc active;
OK
id int None
day string None
pkgname string None
cid string None
pid string None
activation int None
测试链接成功
[hadoop@hs11 ~]sqoop list-databases –connect jdbc:mysql://localhost:3306/ –username root –password admin
Warning: /usr/lib/hcatalog does not exist! HCatalog jobs will fail.
Please set $HCAT_HOME to the root of your HCatalog installation.
13/08/20 16:42:26 WARN tool.BaseSqoopTool: Setting your password on the command-line is insecure. Consider using -P instead.
13/08/20 16:42:26 INFO manager.MySQLManager: Preparing to use a MySQL streaming resultset.
information_schema
easyhadoop
mysql

以上是关于sqoop从mysql导入到hive为啥0变成null的主要内容,如果未能解决你的问题,请参考以下文章

Sqoop从hive导数据到mysql中为啥一直报 ERROR tool.ExportTool:

sqoop从mysql导入到hive中问题

教程 | 使用Sqoop从MySQL导入数据到Hive和HBase

使用sqoop从mysql导入数据到hive

如何使用 Sqoop 从 MySQL 增量导入到 Hive?

sqoop从oracle数据库抽取数据,导入到hive