sqoop-mysql数据导出-报错:java.math.BigInteger cannot be cast to java.lang.Long

今天需要一台电脑的mysql数据库中导出一张表的数据,遇到了一个问题,我觉得值得记录一下。

sqoop 导入方式为:mysql -> hdfs (导入文件系统,不是hive)。

下面展示sqoop job 命令:

#!/bin/bash
#Set the RDBMS connection params
rdbms_connstr="jdbc:mysql://xxx.xxx.xxx.xxx:3306/tablespace"
rdbms_username="root"
rdbms_pwd="mysql"

#Set query and table
#query_sql=

#Set the hive tables
hive_table="xxx"
hive_database="ods"

#hive table create
hive -f /opt/ods_tables/${hive_table}.sql

#sqoop start
sqoop import --connect ${rdbms_connstr} \
--username ${rdbms_username} \
--password ${rdbms_pwd} \
--query "SELECT xxxx FROM tablespace.tablename where \$CONDITIONS" \
--hive-overwrite \
--hive-database ${hive_database} \
--hive-table ${hive_table} \
--delete-target-dir \
--target-dir /db/${hive_database}/${hive_table} \
--fields-terminated-by "\001" \
--m 1

命令没有问题,但是脚本运行就是失败,报错信息如下:
在这里插入图片描述
之后我查看了原表中的字段类型,并没发现有bigint类型的字段,这就很奇怪了,报错信息与实际情况不符,头大。

最后找到一张帖子与我的情况很相似,原因是sqoop的connector包,与数据库的版本差距太大了,造成了报错。

查看mysql版本为:8.0.23
在这里插入图片描述
而sqoop的lib下默认的mysql连接包的版本是:5.1.20

ok,试一下,更换了一下 8.0.23 的连接包,执行脚本,通过,问题解决,很好,perfect!就喜欢这顺滑的感觉。

结论:数据库版本与sqoop包的连接包版本不同的远程,但是这个报错信息也太误导人了。

下面附上 mysql-connector-java 的下载地址:
https://downloads.mysql.com/archives/c-j/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值