sqoop从hive导出mysql常见错误汇总

使用 sqoop 将其中一个表导入 hive:

选择 sqoop 的原因是,datax 不能直接将 mysql 的数据导入 hive,需要提前创建表,然后将数据导入表对应的 hdfs 上。

复制代码
sqoop import --connect jdbc:mysql://shucang:3306/jrxd \
--driver com.mysql.cj.jdbc.Driver \
--username root \
--password 123456 \
--table channel_info \
--hive-import \
--hive-overwrite \
--hive-table ods_jrxd_channel_info \
--hive-database finance \
-m 1

执行报错:

复制代码
Caused by: java.lang.ClassNotFoundException: org.apache.commons.lang.StringEscapeUtils
        at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:349)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
        ... 13 more

解决办法:

复制代码
cp /opt/installs/hive/lib/commons-lang-2.6.jar /opt/installs/sqoop/lib/

假如出现如下错误:

复制代码
Caused by: java.lang.ClassNotFoundException: org.apache.hadoop.hive.conf.HiveConf
        at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:349)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
        at java.lang.Class.forName0(Native Method)

解决办法:

复制代码
cp /opt/installs/hive/lib/hive-common-3.1.2.jar /opt/installs/sqoop/lib/

报错:

复制代码
2024-09-19 15:38:09,650 ERROR tool.ImportTool: Import failed: org.apache.hadoop.mapred.FileAlreadyExistsException: Output directory hdfs://shucang:9820/user/root/channel_info already exists

解决方案:

复制代码
hdfs dfs -rm -R /user/root/channel_info

假如我导入表的时候,表中的一个日期字段是 0000-00-00 00:00:00 就会报错

比如 这个表 user_quota、dict_provinces

报如下错误:

复制代码
Caused by: java.sql.SQLException: Zero date value prohibited
        at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:129)
        at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:97)
        at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:89)
        at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:63)
        at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:73)
        at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:99)
        at com.mysql.cj.jdbc.result.ResultSetImpl.getTimestamp(ResultSetImpl.java:939)
        at org.apache.sqoop.lib.JdbcWritableBridge.readTimestamp(JdbcWritableBridge.java:111)
        at com.cloudera.sqoop.lib.JdbcWritableBridge.readTimestamp(JdbcWritableBridge.java:83)
        at user_quota.readFields(user_quota.java:307)
        at org.apache.sqoop.mapreduce.db.DBRecordReader.nextKeyValue(DBRecordReader.java:244)
        ... 12 more

导致三个表导入失败:

复制代码
在提取数据到hive中遇到一个错误,java.sql.SQLException: Zero date value prohibited.
更改了脚本内容,加了一句话:zeroDateTimeBehavior=convertToNull

于是命令变为:
sqoop import --connect jdbc:mysql://shucang:3306/jrxd?zeroDateTimeBehavior=convertToNull \
--driver com.mysql.cj.jdbc.Driver \
--username root \
--password 123456 \
--table user_quota \
--hive-import \
--hive-overwrite \
--hive-table ods_jrxd_user_quota \
--hive-database finance \
-m 1
相关推荐
·云扬·4 小时前
MySQL Binlog落盘机制深度解析:性能与安全性的平衡艺术
android·mysql·adb
霖霖总总4 小时前
[小技巧64]深入解析 MySQL InnoDB 的 Checkpoint 机制:原理、类型与调优
数据库·mysql
それども6 小时前
分库分表的事务问题 - 怎么实现事务
java·数据库·mysql
·云扬·6 小时前
MySQL Binlog 配置指南与核心作用解析
数据库·mysql·adb
天空属于哈夫克36 小时前
Java 版:利用外部群 API 实现自动“技术开课”倒计时提醒
数据库·python·mysql
luoluoal6 小时前
基于深度学习的web端多格式纠错系统(源码+文档)
python·mysql·django·毕业设计·源码
crossaspeed8 小时前
MySQL-索引
mysql
这周也會开心9 小时前
Redis与MySQL回写中的数据类型存储设计
数据库·redis·mysql
计算机学姐9 小时前
基于SpringBoot的民宿预定管理系统【三角色+个性化推荐算法+数据可视化统计】
java·vue.js·spring boot·mysql·信息可视化·intellij-idea·推荐算法
qq_336313939 小时前
javaweb-web基础(springboot入门)
java·开发语言·mysql