【问题标题】:Sqoop export from HIVE to partitioned Oracle databaseSqoop 从 HIVE 导出到分区的 Oracle 数据库
【发布时间】:2022-01-05 20:29:01
【问题描述】:

我在 Hive 中有一个非分区表,它使用批处理填充了 600 000 条记录。此批处理在填充表之前清除表中的数据。 我正在尝试 sqoop 将此数据导出到分区的 oracle 表。第一次导出时,sqoop导出成功。但是当尝试将数据导出为另一个分区时,我收到以下错误。

我想在这里实现的是,sqoop 导出应该将数据导出到不同的分区。

错误:java.io.IOException:java.sql.SQLException:ORA-14400:插入的分区键未映射到 org.apache.sqoop.mapreduce.AsyncSqlRecordWriter.write(AsyncSqlRecordWriter.java:233) 处的任何分区org.apache.sqoop.mapreduce.AsyncSqlRecordWriter.write(AsyncSqlRecordWriter.java:46) 在 org.apache.hadoop.mapred.MapTask$NewDirectOutputCollector.write(MapTask.java:658) 在 org.apache.hadoop.mapreduce.task。 TaskInputOutputContextImpl.write(TaskInputOutputContextImpl.java:89) at org.apache.hadoop.mapreduce.lib.map.WrappedMapper$Context.write(WrappedMapper.java:112) at org.apache.sqoop.mapreduce.AvroExportMapper.map(AvroExportMapper. java:46) 在

【问题讨论】:

  • 请提供足够的代码,以便其他人更好地理解或重现问题。

标签: oracle hive sqoop partition


【解决方案1】:

Sqoop 导出是一对一的简单insert into。所以首先请确保列名、数据类型相同/兼容。 现在,查看错误,似乎 oracle 没有您尝试从 hive 加载的分区。

请注意,oracle 不会自动创建新分区,除非提及默认分区。因此,在检查 hive 和 oracle 中的默认分区后添加所有可能的分区。它应该可以解决问题。

ALTER TABLE tab ADD PARTITION tab_part_hr VALUES ('HR');
--default partition
ALTER TABLE tab ADD PARTITION tab_part_hr VALUES NOT IN ('HR', ....); -- mention all values.

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-07-26
    • 1970-01-01
    • 1970-01-01
    • 2019-10-07
    • 1970-01-01
    • 1970-01-01
    • 2017-07-12
    • 1970-01-01
    相关资源
    最近更新 更多