使用kylin 通過hive來創(chuàng)建cube双抽,在build的時候出現(xiàn)這個錯誤
FAILED: SemanticException [Error 10041]: No partition predicate found for Alias “im_opgroupchatstat” Table “im_opgroupchatstat_cube”
出現(xiàn)這個問題主要是hive設置了嚴格模式 ,而創(chuàng)建cube的時候查詢沒有指定分區(qū)啊胶,所以報錯
解決辦法有
1领追、set hive.mapred.mode=unstrict;
指定使用非嚴格模式庶诡,但是hive設置了嚴格模式就是為了防止某些查詢消耗巨大的資源笤闯,所以請慎重堕阔。
2、修改SQL在where中加上分區(qū)字段颗味。
比如我出問題的這條SQL,沒有加分區(qū)條件超陆,直接查詢全表,所以報錯
INSERT OVERWRITE TABLE kylin_intermediate_im_opgroupchatstat_cube_4b1ca3ae_802b_4c80_9207_f34230123cde SELECT
IM_OPGROUPCHATSTAT.UID as IM_OPGROUPCHATSTAT_UID
,IM_OPGROUPCHATSTAT.EID as IM_OPGROUPCHATSTAT_EID
,IM_OPGROUPCHATSTAT.WORKSHEETID as IM_OPGROUPCHATSTAT_WORKSHEETID
,IM_OPGROUPCHATSTAT.NICKNAME as IM_OPGROUPCHATSTAT_NICKNAME
,IM_OPGROUPCHATSTAT.OPERATORGROUPCODE as IM_OPGROUPCHATSTAT_OPERATORGROUPCODE
,IM_OPGROUPCHATSTAT.ROLEID as IM_OPGROUPCHATSTAT_ROLEID
,IM_OPGROUPCHATSTAT.DAY_START as IM_OPGROUPCHATSTAT_DAY_START
,IM_OPGROUPCHATSTAT.MINUTE_START as IM_OPGROUPCHATSTAT_MINUTE_START
FROM PRICEENGINEDB.IM_OPGROUPCHATSTAT as IM_OPGROUPCHATSTAT
WHERE 1=1
;
修改后加入分區(qū)字段D即可正常執(zhí)行浦马。
INSERT OVERWRITE TABLE kylin_intermediate_im_opgroupchatstat_cube_4b1ca3ae_802b_4c80_9207_f34230123cde SELECT
IM_OPGROUPCHATSTAT.UID as IM_OPGROUPCHATSTAT_UID
,IM_OPGROUPCHATSTAT.EID as IM_OPGROUPCHATSTAT_EID
,IM_OPGROUPCHATSTAT.WORKSHEETID as IM_OPGROUPCHATSTAT_WORKSHEETID
,IM_OPGROUPCHATSTAT.NICKNAME as IM_OPGROUPCHATSTAT_NICKNAME
,IM_OPGROUPCHATSTAT.OPERATORGROUPCODE as IM_OPGROUPCHATSTAT_OPERATORGROUPCODE
,IM_OPGROUPCHATSTAT.ROLEID as IM_OPGROUPCHATSTAT_ROLEID
,IM_OPGROUPCHATSTAT.DAY_START as IM_OPGROUPCHATSTAT_DAY_START
,IM_OPGROUPCHATSTAT.MINUTE_START as IM_OPGROUPCHATSTAT_MINUTE_START
FROM PRICEENGINEDB.IM_OPGROUPCHATSTAT as IM_OPGROUPCHATSTAT
WHERE 1=1 AND (IM_OPGROUPCHATSTAT.D >= '2019-02-20' AND IM_OPGROUPCHATSTAT.D < '2019-02-21')
;
在Kylin中时呀,對cube構建的SQL加分區(qū)字段张漂,有一種辦法是修改這個cube依賴的model,在model的settings里面設置Partition Date Column為你的hive的分區(qū)字段即可谨娜。
查看hive的分區(qū)字段 SHOW PARTITIONS tablename