将表导入到sqoop时出现错误ora-01843

pgccezyw  于 2021-06-02  发布在  Hadoop
关注(0)|答案(2)|浏览(316)

我已经将一个包含5400万行的表导入到hadoop集群的hdfs中,现在,从oracledb导入该表的一部分
[我创建了一个视图,只选择了一小段时间。结果只有260k行]
,我得到以下错误:
错误:java.io.ioexception:org.apache.sqoop.mapreduce.db.dbrecordreader.nextkeyvalue中的sqlexception(dbrecordreader)。java:277)在org.apache.hadoop.mapred.maptask$newtrackingrecordreader.nextkeyvalue(maptask。java:556)在org.apache.hadoop.mapreduce.task.mapcontextimpl.nextkeyvalue(mapcontextimpl。java:80)在org.apache.hadoop.mapreduce.lib.map.wrappedmapper$context.nextkeyvalue(wrappedmapper。java:91)在org.apache.hadoop.mapreduce.mapper.run(mapper。java:145)在org.apache.sqoop.mapreduce.autoprogressmapper.run(autoprogressmapper。java:64)在org.apache.hadoop.mapred.maptask.runnewmapper(maptask。java:787)
在org.apache.hadoop.mapred.maptask.run(maptask。java:341)在org.apache.hadoop.mapred.yarnchild$2.run(yarnchild。java:168)位于javax.security.auth.subject.doas(subject)的java.security.accesscontroller.doprivileged(本机方法)。java:422)在org.apache.hadoop.security.usergroupinformation.doas(usergroupinformation。java:1709)在org.apache.hadoop.mapred.yarnchild.main(yarnchild。java:162)
原因:java.sql.sqldataexception:ora-01843:不是有效月份
使用的命令是: sqoop import --connect jdbc:oracle:thin:@<my_host:port:instanceia> --username <user> --password <pass> --table <DB.TABLE> --split-by NUM_LINE --m 10 --target-dir /user/rodrigo/SLICED_TABLE 2>&1|tee import_tab_menor.txt 我是一个hadoop/hive/sqoop新手,这只是为了学习,但我真的很想知道如何解决这个问题。
我考虑过创建一个视图,将日期数据类型更改为string来导入表,但它会给我带来不准确的结果。
编辑:
我发现这是视图创建中的一个内部db错误。我创建视图的方式返回了我需要的结果。但这是一个错误的方法来创建它。
在sqoop内部的查询中,需要将最后一个 AND \$CONDITIONS ,将查询发送到oracle的格式为 to_date('02/04/16', 'dd/mm/yy') . 然后就成功了。
为了绕过这个错误,我创建了一个视图,将date字段的数据类型更改为varchar,但由于某些原因,它无法正常工作。
所以我又改变了 to_number(to_char('02/04/16', 'dd/mm/yy')) 让它工作。
我不想结束这个问题,因为我想知道这个问题的答案。如果我找到了,我会分享。

lo8azlld

lo8azlld1#

错误在于我创建视图的方式:
我使用文本格式创建了视图来选择日期间隔。
像这样的 DT_F>'02/04/16 但是当我用 to_date('02/04/16', 'dd/mm/yy') 错误ora-01843不再发生。

zpgglvta

zpgglvta2#

出现此问题的最常见原因是,列名称中有关键字,例如,将列命名为“key”或“order”(只是一个伪示例),请尝试像这样导入表
--查询“select*from db.table where$conditions”

相关问题