当前位置: 首页 > article >正文

sqoop Oracle 导入到hive 日期时间消失

sqoop脚本:

sqoop import -D mapred.job.queue.name=highway \
-D mapreduce.map.memory.mb=4096 \
-D mapreduce.map.java.opts=-Xmx3072m \
--connect "jdbc:oracle:thin:@//localhost:61521/LZY2" \
--username LZSHARE \
--password '123456' \
--query "SELECT 
    TO_CHAR(GCRQ, 'YYYY') AS gcrq_year,
    TO_CHAR(GCRQ, 'MM') AS gcrq_month,
    TO_CHAR(GCRQ, 'DD') AS gcrq_day,
    YEAR,
    TO_CHAR(GCRQ, 'YYYY-MM-DD HH24:MI:SS') AS GCRQ,
    ........
    TO_CHAR(DELETE_TIME, 'YYYY-MM-DD HH24:MI:SS') AS DELETE_TIME,
    CREATE_BY,
    TO_CHAR(CREATE_TIME, 'YYYY-MM-DD HH24:MI:SS') AS CREATE_TIME,
    UPDATE_BY,
    TO_CHAR(UPDATE_TIME, 'YYYY-MM-DD HH24:MI:SS') AS UPDATE_TIME,
    TO_CHAR(INSERT_TIME, 'YYYY-MM-DD HH24:MI:SS') AS INSERT_TIME
	FROM LZJHGX.dat_dcsj_time
WHERE TO_CHAR(GCRQ , 'YYYY-MM-DD') < TO_CHAR(SYSDATE, 'YYYY-MM-DD') AND \$CONDITIONS" \
--split-by sjxh \
--hcatalog-database dw \
--hcatalog-table ods_pre_dat_dcsj_time \
--hcatalog-storage-stanza 'stored as orc' \
--num-mappers 20

其中query语句在Oracle中执行时,日期时间都是完整保留的。

但是执行完毕查看hive,却发现日期时间字段都是为NULL。

但如果不做tochar转换会报错:

Error: java.lang.ClassCastException: java.sql.Timestamp cannot be cast to org.apache.hadoop.hive.common.type.Timestamp
那么换个解决思路,将hive表中的timestamp字段改为string类型,这样修改后成功解决。


http://www.kler.cn/a/393946.html

相关文章:

  • Ruby编程语言全景解析:从基础到进阶
  • Python中异常处理小测验
  • 树形dp总结
  • vue2+ element ui 集成pdfjs-dist
  • 【OceanBase 诊断调优】—— ocp上针对OB租户CPU消耗计算逻辑
  • 论文阅读《BEVFormer v2》
  • unity 玩家和炸弹切线计算方式
  • python 爱心邮件代码
  • 二叉树的遍历(手动)
  • 2025年法定节假日日历
  • 【Docker】Docker Compose部署单节点多容器应用
  • 从零开始的 Hugging Face 项目:我的首个在线 SQL 查询工具之旅20241111
  • 将python下载的依赖包传到没网的服务器
  • Docker基础概念
  • sentinel服务保护
  • SQL面试题——蚂蚁SQL面试题 会话分组问题
  • 【C语言】指针数组和数组指针的区别
  • 【MinIO】Python 运用 MinIO 实现简易文件系统
  • 【MySQL基础刷题】总结题型(三)
  • 前端入门一之ES6--递归、浅拷贝与深拷贝、正则表达式、es6、解构赋值、箭头函数、剩余参数、String、Set
  • 乐维网管平台(六):如何正确管理设备端口
  • 矩阵中的路径(dfs)-acwing
  • spring boot项目打成war包部署
  • 重构代码之用多态替代条件逻辑
  • 设计模式设计模式
  • 释放 PWA 的力量:2024 年的现代Web应用|React + TypeScript 示例