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类型,这样修改后成功解决。

相关推荐
jimy111 小时前
Oracle的always free账户,提高网络使用率的保活脚本
服务器·网络·oracle
Irene199111 小时前
Oracle 数字区间、日期边界问题分类总结(日期运算、日期比较大小)
oracle·数字区间
dishugj13 小时前
SAP HANA数据库文件目录说明
服务器·数据库·oracle
努力进修14 小时前
连接条件下推原理与实战:解决子查询、CTE大数据量性能问题
数据库·oracle
且去填词15 小时前
Go并发模式进阶:从Worker Pool到可取消任务调度器
数据库·oracle·golang
云边有个稻草人15 小时前
金仓 KingbaseES Pro*C 迁移指南:从 Oracle 平滑迁移
oracle·数据库迁移·kingbasees·金仓数据库·国产化适配·proc 迁移
jimy115 小时前
Oracle的always free oci实例,standard em2.1.micro,保活脚本
服务器·oracle
曹牧1 天前
Oracle:视图排序
数据库·oracle
文档搬运工1 天前
单独导出Oracle中的job
oracle
会编程的土豆1 天前
MySQL DDL(数据定义语言)总结
数据库·mysql·oracle