【发布时间】:2019-01-23 20:57:34
【问题描述】:
我有一个按天分区的表。我尝试通过设置插入数据
设置 hivevar:ds=2018-12-01;
然后使用** INSERT OVERWRITE table XTABLE partition(day='${hivevar:ds}') ** 这工作正常
但是当我喜欢下面的时候
设置 hivevar:pd=date_add('${hivevar:ds}',-1);
然后 ** INSERT OVERWRITE 表 XTABLE 分区(day='${hivevar:pd}') ** 它正在抛出错误。我认为问题是因为额外的引号但无法找到解决方法。
错误是:
无法识别常量中 ''date_add('' '2018' '-' 附近的输入
我的密码:
set hivevar:ds=2018-12-01;
set hivevar:pd=date_add('${hivevar:ds}',-1);
set hive.exec.dynamic.partition.mode=nonstrict;
CREATE TABLE IF NOT EXISTS XTABLE (emp_id BIGINT, start_time STRING, end_time STRING)
PARTITIONED BY(day STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t';
--THIS IS WORKING FINE
INSERT OVERWRITE table XTABLE partition(day='${hivevar:ds}')
select distinct d.emp_id, d.start_time, d.end_time from
(
select emp_id, start_time, end_time from XTABLE where day='${hivevar:ds}'
) d;
--THIS IS THROWING AN ERROR cannot recognize input near ''date_add('' '2018' '-' in constant
--SEEMS PROBLEM IS WHILE SETTING THE VARIABLE
INSERT OVERWRITE table XTABLE partition(day='${hivevar:pd}')
select distinct d.emp_id, d.start_time, d.end_time from
(
select emp_id, start_time, end_time from XTABLE where day='${hivevar:pd}'
) d;
如果成功,它应该给出如下消息:
加载数据到表 xtable 分区(day=2018-12-01)
【问题讨论】: