配置单元错误:orc不支持从日期到时间戳的类型转换

nimxete2  于 2021-05-29  发布在  Hadoop
关注(0)|答案(0)|浏览(847)

我在配置单元中有一个ddl为的源表:

CREATE EXTERNAL TABLE JRNL.SOURCE_TAB(
  ticket_id varchar(11),
  ttr_start timestamp,
  ttr_stop timestamp
)
PARTITIONED BY (
  exp_dt string)
ROW FORMAT DELIMITED
  FIELDS TERMINATED BY '\u0001'
STORED AS INPUTFORMAT
  'org.apache.hadoop.hive.ql.io.orc.OrcInputFormat'
OUTPUTFORMAT
  'org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat'
LOCATION
  'hdfs://my.cluster.net:8020//db/data/SOURCE_TAB'
  TBLPROPERTIES (
  'last_modified_by'='edpintdatd',
  'last_modified_time'='1466093031',
  'serialization.null.format'='',
  'transient_lastDdlTime'='1466093031')

查询表时:

hive> select exp_dt from JRNL.SOURCE_TAB limit 3;

它给了我一个例外:

Failed with exception java.io.IOException:java.io.IOException: ORC does not support type conversion from DATE to TIMESTAMP

即使在我尝试创建类似于上述源代码的复制表时,使用:

CREATE TABLE JRNL.SOURCE_TAB_BKP(
  ticket_id varchar(11),
  ttr_start timestamp,
  ttr_stop timestamp
)
PARTITIONED BY (exp_dt string);

然后使用以下命令在该表中插入数据:

INSERT INTO TABLE JRNL.SOURCE_TAB_BKP PARTITION (exp_dt)
  SELECT
  ticket_id,
  ttr_start,
  ttr_stop,
  exp_dt string
FROM JRNL.SOURCE_TAB;

它仍然给我错误 ORC does not support type conversion from DATE to TIMESTAMP 我试过用

to_utc_timestamp(unix_timestamp(ttr_start),'UTC'),
to_utc_timestamp(unix_timestamp(ttr_stop),'UTC'),

但这也没用。
我已经定好了 hive.exec.dynamic.partition.mode=nonstrict . 我甚至用过 CAST(.... as DATE) , CAST(.... as TIMESTAMP) . 也没用。

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题