栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

sqoop将oracle数据导入到hive报错:Error: java.io.IOException: SQLException in nextKeyValue

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

sqoop将oracle数据导入到hive报错:Error: java.io.IOException: SQLException in nextKeyValue

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录
  • 问题
  • 一、问题是什么导致的?
  • 二、验证问题
  • 总结


问题

sqoop将oracle数据导入到hive报错:Error: java.io.IOException: SQLException in nextKeyValue


提示:以下是本篇文章正文内容,下面案例可供参考

一、问题是什么导致的?

1、字段属性不匹配
2、日期格式问题
3、资源不足
错误截图:

二、验证问题

导入语句:

/export/servers/sqoop/bin/sqoop import 
--connect jdbc:oracle:thin:@192.168.xxx.xx:1521/zhuting 
--username root 
--password 123456 
--target-dir  /data1/zhuting/db/ODS_R_PRO_PRODUCT/2022-06-09 
--hive-drop-import-delims  
--null-string '\N' 
--null-non-string '\N' 
--delete-target-dir 
--num-mappers 1 
--fields-terminated-by '01' 
--query  "select SKUID,SKU,MAINSKU,NAME_CN,NAME_EN,COSTPRICE,PURPRICE,WEIGHT,PACKWEIGHT,PURUSERID,PURUSERNAME,DEVELOPUSERID,DEVELOPUSERNAME,FIRSTSUPPLIERID,FIRSTSUPPLIERNAME,WAITORDERNUM,BENUM,USERTIME,CHECKTIME,ORDERNUM,STATUS,KEYWORD_CN,
KEYWORD_EN,PREPACKID,PREPACKNAME,DESCR,QCDESCR,USER_ID,USERNAME,CATALOGUEID,CATALOGUENAME,PIC1,PIC2,PIC3,CUSTSTATUS_ID,CUSTSTATUS_NAME,PURDAY,ONEDAYNUM,TORTCLASS,DECLAREDPRICE,STOCKOUT_QTY,TBD_QTY,STORAGE_ID,STORAGE_NAME,
LOCATION_ID,LOCATION_NAME,INVENTORY,ALERTDAY,ALERTNUM,PURPRICE2,YESTERDAYSALES,DISABLEFLAG,ISABLESEE,ISABLETIME,LOCATION_BAK,FIRSTSUPPLIERLINK,NEWORDERSKUNUM,NEWBENUM,SEVEN_DAYS,THIRTY_DAYS,SIXTY_DAYS,NINTY_DAYS,
INVENTORY_TURNOVER,CUTPRICETIME,ONE_DAYS,TWO_DAYS,THREE_DAYS,FOURTEENTH_DAYS,TWENTYEIGHT_DAYS,DEVLINEABBR,ORIGINALSTATUS,SPECIMENTIME,QUALITY,FIFTEEN_DAYS,ISCUSTOMIZATION,CUSTOMIZATIONTIME,SUPPLYERID,SUPPLYERNAME,
DEVELOPUSERREALNAME,DEPRECIATEDAYS,PROPACKID,PROPACKNAME,OVERSEAS_INVENTORY,OFFERID_1688,SPECID,ACTUAL_LENGTH,ACTUAL_WIDTH,ACTUAL_HEIGHT,PRETEND_LENGTH,PRETEND_WIDTH,PRETENDL_HEIGHT,INITIAL_SORTING,ALIMINPURQTY,SORTING_MODE,
SORTINGQTY,INITIAL_SORTING_COST,WAREHOUSE_SORTING_COST,NPURPRICE,INITIAL_PURPRICE,PROFREIGHT,CSORTINGPRICE,SORTINGFEE,UPDATEFLAG,EXPRESSFLAG,DECNAME,SPECIDVALUE,ISFILE,LOGISTICS_STATUS,PROCUREMENT_STATUS,ENDECNAME from R_PRO_PRODUCT where 1=1 and $CONDITIONS"

方法:
1、如果报错中有涉及到字段或者字段值的,就查看是否是字段属性不匹配
2、有时候是时间字段错误数据,mysql会报这种错,具体文章:https://www.freesion.com/article/7184430494/
3、我首先是在原oracle主库测试,使用部分字段,看能否导入,结果10个字段可以导入,但是多加一个11个字段导入失败,将第11个字段放在sql最前面,可以导入,排除字段问题,将第11个字段的值固定写为1,导入成功,判断是oracle数据库资源不够,让DBA查询oracle后台资源,表示磁盘利用率已达到100%,所以导入过程会失败,切换到oracle从库,同步的语句可以导入,所以根本原因是磁盘资源不足,要么优化程序,减少磁盘利用率,要么切换到其他备份数据库,不要使用主库,主库连接比较多,资源可能不够。参考文章:https://www.136.la/java/show-98705.html


总结

遇到问题可以从以下几方面来检查,一定要仔细查看报错日志,日志本身看不出问题,就从数据本身、数据结构、程序逻辑、集群资源等方面一一检查!

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/963263.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号