HIVE BUG: NoViableAltException

在运行Hive代码时遇到NoViableAltException错误,原因是Hive-0.13.0不支持date_add函数在分区操作中的使用。为解决此问题,建议使用预计算好的结果来替代built-in function,例如通过先计算好日期再进行分区操作。参考链接中提供了更多类似问题的解决方案。
摘要由CSDN通过智能技术生成
  • 运行代码
#!/bin/bash             shell文件中的头
#target_table:tag_model.mid_ope_indicators_per_day_xxt
#source_table: chiq.standard_actions_ch_app;
format_date()
{
        Y=`expr substr $1 1 4`
        M=`expr substr $1 6 2`
        D=`expr substr $1 9 2`
        echo $Y"-"$M"-"$D
}
if [ $# -eq 1 ]
then
    n_date=$1
else
    n_date=`date -d yesterday +"%Y-%m-%d"`
fi
v_date=$(format_date $n_date) #昨天
p_date=`date -d "$v_date -161 day " +%Y-%m-%d` #161天前

for i in $(seq 1 10)
do

hive<<start
use tag_model;
DROP TABLE IF EXISTS tag_model.dim_ope_details_qjtj_single_user_popup;
CREATE TABLE IF NOT EXISTS tag_model.dim_ope_details_qjtj_single_user_popup(ip string, mac string, p_log_date string, rid string, tv_time_popup string);

INSERT OVERWRITE TABLE tag_model.dim_ope_details_qjtj_single_user_popup
SELECT DISTINCT ip, mac, p_log_date, reportinfo['rid'] AS rid, time AS tv_time_popup 
FROM chiq.standard_actions_ch_app
WHERE reporttype = 'action' AND sort = 'CH_APP' AND subclass = 'ChGlobalSearch' AND reportinfo['action'] = 'EnterApp'
AND p_log_date = date_add('$p_date', $i)
AND mac REGEXP '([0-9a-fA-F]{2}:){5}[0-9a-fA-F]{2}' AND mac <> '00:00:00:00:00:00';

CREATE  TABLE IF NOT EXISTS tag_model.mid_ope_indicators_per_day_test(scene string, T int, indicators map<string,string>)
COMMENT 'stardard indicators for measuring performance of recommend system' PARTITIONED BY (p_log_date string) ROW FORMAT DELIMITED  FIELDS TERMINATED 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值